Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
drupal的mod_重写规则,主页/根域除外_Drupal_Mod Rewrite - Fatal编程技术网

drupal的mod_重写规则,主页/根域除外

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

我有一个非常简单的重写规则将移动代理从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实现这一点的最佳方法是使用移动工具模块。这对所有人都有效

除了主页,无论何时我进入
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行左右)。