mod_rewrite - 根据x_wap_profile标头的存在重定向到不同的url

时间:2014-04-23 14:18:10

标签: mod-rewrite

我们有一个桌面和我们的webapp的移动版本。 桌面网址更加突出,因此我们希望将用户重定向到移动版本,以防请求来自移动设备的桌面网址。

在apache配置中我们有mod_rewrite模块  我的配置目前看起来像这样

<IfModule mod_rewrite>
RewriteEngine On
RewriteCond %{x-wap-profile} ^https?://
RewriteRule ^/(.*) http://google.com [L,R]
</IfModule>

此时这是我们唯一的重写规则,所以我不确定是否需要L,因为这是第一个也是最后一个规则。

我刚刚指示重定向到google.com进行测试

我不确定我的状况检查是否正确。我无法弄清楚如何检查是否存在标题。是什么问题?如果是,请告诉我如何指定RewriteCond

我是如何测试的? 我正在测试Firefox浏览器并使用Modify headers插件来模拟移动请求。我正在添加x_wap_profile标头。 但是我没有看到这个配置发生任何重定向。你能告诉我哪里出错了吗?如果有任何日志记录可以在这里介绍来验证这个规则是否正在被攻击,我也会感激。我使用当前修改的配置时看不到任何错误。

2 个答案:

答案 0 :(得分:1)

要检查mod_rewrite中的任意标头(即不在this list中的标头),语法为:

RewriteCond %{HTTP:x-wap-profile}

答案 1 :(得分:1)

这个似乎有效:

RewriteEngine On
RewriteCond %{HTTP:x-wap-profile} ^.+
RewriteRule .* http://google.com [L,R]


piotrek@piotrek-Vostro-2520:~/vhosts/localhost$ curl http://localhost/
OKOK
piotrek@piotrek-Vostro-2520:~/vhosts/localhost$ curl -H 'x-wap-profile: abcd' http://localhost/
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="http://google.com">here</a>.</p>
<hr>
<address>Apache/2.4.6 (Ubuntu) Server at localhost Port 80</address>
</body></html>

更改它以使其适用于标题内的https。

此处的文档:Other things you should be aware of:中的http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritecond