drupal的mod_重写规则,主页/根域除外
我有一个非常简单的重写规则将移动代理从drupal 6多站点重定向到我们的移动域drupal的mod_重写规则,主页/根域除外,drupal,mod-rewrite,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] Rewri
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实现这一点的最佳方法是使用移动工具模块。这对所有人都有效 除了主页,无论何时我进入
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]
我不知道为什么,但问题是目录。我删除了RewriteCond%{REQUEST_FILENAME}-它工作,有了它,就没有了。奇怪的是,接下来是默认的drupal规则,它确实有这个条件。但这是我在7小时前的回答中说的。不明白。感谢联邦航空局,我最终走了这条路,当它仍然不起作用时,我只是复制了之后的规则集,并开始一个接一个地删除东西,直到它被目录条件(见上文)证明是正确的,这正是我在回答中指出的:“…没有请求文件名条件…”。
-d
条件将根目录从规则中排除。另一方面,不能从当前代码中删除该条件,对现有目录的请求将出现问题。他们不会被排除在规则之外,你的网站会出现一些问题。这样做的方法,如我的回答所示:将代码块添加到问题中的代码块。所谓代码块,我指的是我答案中的一整套规则(11行左右)。