0
RewriteRule ^(.*)\.php$ ^(.*)\.php$?m=0 [R=301,L]

我希望将所有内页重写为 ?m=0 来自 SITEDOTCOM?m=0

所以基本上,如果有人使用尾随登陆整个站点?我希望所有链接都是 ?m=0

??

原因:移动重定向完整站点按钮一次有效。如果用户单击某些内容,则不起作用。返回移动网站。

我的代码看起来像这样

RewriteEngine on
RewriteBase /

# Check if mobile=1 is set and set cookie 'mobile' equal to 1
RewriteCond %{QUERY_STRING} (^|&)mobile=1(&|$)
RewriteRule ^ - [CO=mobile:1:%{HTTP_HOST}]

# Check if mobile=0 is set and set cookie 'mobile' equal to 0
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [CO=mobile:0:%{HTTP_HOST}]

# cookie can't be set and read in the same request so check
RewriteCond %{QUERY_STRING} (^|&)mobile=0(&|$)
RewriteRule ^ - [S=1]

# Check if this looks like a mobile device
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|iphone|ipod|iemobile|opera mobile|palmos|webos|googlebot-mobile" [NC,OR]
RewriteCond %{HTTP:Profile}       !^$

# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST}          !^m\.
# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP:Cookie}        !\mobile=0(;|$)
# Now redirect to the mobile site
RewriteRule ^ http://m.Site.com%{REQUEST_URI} [R,L]    

尝试了顶级代码返回无限循环。?想法?

4

1 回答 1

0

这一行在这里:

RewriteCond %{HTTP:Cookie}        !\mobile=0(;|$)

可能也应该检查查询字符串:

RewriteCond %{QUERY_STRING}       !(^|&)mobile=0(&|$)

因为在服务器响应之前 cookie 不会发送到浏览器,所以到那时已经进行了重定向。这两CO行创建了一个要发送到浏览器的 cookie,并在响应之前立即将它们重定向到移动设备。


这样的事情怎么样?将重定向规则更改为:

RewriteCond %{HTTP:Cookie}        mobile=1(;|$)
RewriteCond %{QUERY_STRING}       ^$
RewriteRule ^ http://m.Site.com%{REQUEST_URI}?mobile=1 [R,L]

RewriteCond %{HTTP:Cookie}        \mobile=0(;|$)
RewriteCond %{QUERY_STRING}       ^$
RewriteRule ^ http://Site.com%{REQUEST_URI}?mobile=0 [R,L]
于 2013-08-29T00:32:48.730 回答