使用.htaccess进行移动重定向 - 仅限主页

时间:2013-06-21 17:38:19

标签: .htaccess redirect mobile request uri

我开始使用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]

这不起作用。我该怎么办?

3 个答案:

答案 0 :(得分:1)

下面的重写规则在文档根目录中的.htaccess文件中进行了测试。 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} (.*)/$

为什么,我不知道