drupal的mod_rewrite规则除了主页/根域之外

时间:2013-04-29 17:13:18

标签: drupal mod-rewrite

我有一个非常简单的重写规则,可以从我们的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

2 个答案:

答案 0 :(得分:1)

  

除了www.domain.comdomain.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)

实现此目标的最佳方法是使用移动工具模块。它适用于所有人!