0

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

4

2 回答 2

1

上面的一切都很好,除了主页,每当我去 www.domain.comdomain.com什至www.domain.com/

我猜您需要另一个没有 REQUEST_FILENAME 条件的规则,并且需要一个附加条件来确认 URI-path 为空。

由于条件仅对下一条规则有效,因此有必要对这条附加规则重复它们。您可以尝试在您的问题中插入此代码块:

# 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]
于 2013-04-30T06:18:27.390 回答
0

实现这一点的最好方法是使用移动工具模块。它适用于所有人!

于 2013-04-30T06:04:53.293 回答