RewriteRule ^(.*)\.php$ ^(.*)\.php$?m=0 [R=301,L]
我希望所有内页都被重写为来自SITEDOTCOM的?m = 0?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]
尝试顶级代码返回无限循环。想法?
答案 0 :(得分: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]