我有一个非常简单的重写规则,可以从我们的drupal 6多站点将移动代理重定向到我们的移动域
RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteCond %{HTTP_ACCEPT} text/vnd.wap.wml [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !(ipad|joojoo|tablet|hiton) [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
# Param in URL to skip going to mobile site
RewriteCond %{QUERY_STRING} !mobile=1 [NC]
RewriteCond %{HTTP_USER_AGENT} \bagent1|agent2|agent3etc..\b [NC]
RewriteRule (.*) "http\:\/\/m\.domain\.com/" [R=301,L]
除了主页之外,上述所有内容都很有效,每当我转到www.domain.com或domain.com甚至www.domain.com/时,我都不会被重定向。网站上的任何其他页面都可以正常工作。我尝试使用rewritebase /具有相同的结果。有什么建议?
TIA
答案 0 :(得分:1)
除了
之外,上述所有内容都非常有用,除了主页www.domain.com
或domain.com
甚至www.domain.com/
我猜你需要一个没有REQUEST_FILENAME条件的另一条规则,还有一个附加条件来确认URI路径是空的。
由于条件仅对下一个规则有效,因此必须为此附加规则重复这些规则。您可以尝试将此代码块插入问题中的代码块之外:
# Conditions in the question
RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteCond %{HTTP_ACCEPT} text/vnd.wap.wml [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !(ipad|joojoo|tablet|hiton) [NC]
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteCond %{QUERY_STRING} !mobile=1 [NC]
RewriteCond %{HTTP_USER_AGENT} \bagent1|agent2|agent3etc..\b [NC]
# New condition and rule
RewriteCond %{REQUEST_URI} ^/$ [NC]
RewriteRule ^ http://m.domain.com/ [R=301,L]
注意:您的当前规则可以改进,因为替换URL是纯文本字符串。像这样:
RewriteRule ^(.*) http://m.domain.com/ [R=301,L]
答案 1 :(得分:0)
实现此目标的最佳方法是使用移动工具模块。它适用于所有人!