我有一个移动网址,我想重定向到子网域。
即。 example.com/mobile到m.example.com
但是,当我有url example.com/mobile/boston_resources /
时它重定向到m.example.com/mobile/boston_resources/?city=boston (而不是m.example.com/mobile/boston_resources /)
我正在使用:
RewriteCond %{QUERY_STRING} page=[1-9]+ [NC,OR]
RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1
任何帮助表示赞赏
答案 0 :(得分:0)
在您的匹配项中添加一个尾随?
,以删除任何查询字符串。
RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1?
其次,RewriteCond
不适用于RedirectMatch
,而是RewriteRule
。
RewriteCond %{QUERY_STRING} page=\d+ [NC]
RedirectRule ^mobile/(.*)$ http://m.example.com/$1? [R=301,L]
[OR]
已被删除,因为只有一个RewriteCond
和[1-9]+
已更改为包含10
等。请注意,将RewriteCond
表示仅重定向当您在查询字符串中有page=
时。如果您无论如何都需要重定向,请删除条件并保留规则。
答案 1 :(得分:0)
RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1?
似乎要做的伎俩。我已经牺牲了页面重定向的必要性。
答案 2 :(得分:0)
清除浏览器缓存或使用其他浏览器进行测试。
通过httpd.conf
启用mod_rewrite和.htaccess,然后将此代码放在.htaccess
目录下的DOCUMENT_ROOT
中:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=.+ [NC]
RedirectRule ^mobile/(.*)$ http://m.example.com/$1? [R=302,L,NC]
验证一切正常后,将R=302
替换为R=301
。在测试mod_rewrite规则时,请避免使用R=301
(永久重定向)。