我开始使用here描述的方法来创建移动重定向,并且它运行良好。
然而,接下来我需要做的是防止它发生在除主页之外的任何页面上。换句话说:如果用户从移动设备加载主页,则应该发生重定向 - 但如果他们从移动设备加载任何其他页面,则不应发生重定向。
示例:
主页网址=重定向
博客网址=无重定向
关于我们URL = NO-redirect
等等等以下是我目前的代码:
# Check if this is the noredirect query string
RewriteCond %{QUERY_STRING} (^|&)m=0(&|$)
# Set a cookie, and skip the next rule
RewriteRule ^ - [CO=mredir:0:www.domain.com]
# Failed attempt at redirecting only homepage
RewriteCond %{HTTP_HOST} ^(domain\.com|www\.domain\.com)$ [NC]
# Check if we're just going to the homepage - fail
RewriteCond %{REQUEST_URI} ^/(index.php)?$
RewriteCond %{HTTP:x-wap-profile} !^$ [OR]
RewriteCond %{HTTP:Profile} !^$ [OR]
RewriteCond %{HTTP_USER_AGENT} "acs|alav|alca|amoi|audi|aste|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "dang|doco|eric|hipt|inno|ipaq|java|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|opwv" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "palm|pana|pant|pdxg|phil|play|pluc|port|prox|qtek|qwap|sage|sams|sany" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|w3cs|wap-|wapa|wapi" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "wapp|wapr|webc|winw|winw|xda|xda-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "up.browser|up.link|windowssce|iemobile|mini|mmp" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "symbian|midp|wap|phone|pocket|mobile|pda|psp" [NC]
RewriteCond %{HTTP_USER_AGENT} !macintosh [NC]
# Check if we're not already on the mobile site
RewriteCond %{HTTP_HOST} !^m\.
# Can not read and write cookie in same request, must duplicate condition
RewriteCond %{QUERY_STRING} !(^|&)m=0(&|$)
# Check to make sure we haven't set the cookie before
RewriteCond %{HTTP_COOKIE} !^.*mredir=0.*$ [NC]
# Now redirect to the mobile site
RewriteRule ^(index\.php)?$ http://m.domain.com [R,L]
这不起作用。我该怎么办?
答案 0 :(得分:1)
下面的重写规则在文档根目录中的.htaccess
文件中进行了测试。 1}}和m.domain.com
视情况而定。
此外,您可以通过附加domain.com
或?m=0
或使用脚本语言(在本例中为php)设置?m=1
Cookie来强制移动或关闭任何网址。
mredir
答案 1 :(得分:0)
你的问题在这里:
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteCond %{REQUEST_URI} ^/$
请求uri不能同时是/index.php
AND /
。这个正则表达式需要组合成一个/或:
RewriteCond %{REQUEST_URI} ^/(index.php)?$
答案 2 :(得分:0)
出于一些奇怪的原因,现在,这有用吗?!?!?
RewriteCond %{REQUEST_URI} (.*)/$
为什么,我不知道