0

我有一个移动 url,我想重定向到子域 m。

即 example.com/mobile 到 m.example.com

但是,当我有网址 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

任何帮助表示赞赏

4

3 回答 3

0

在匹配中添加尾随?以删除存在的任何查询字符串

RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1?

其次, aRewriteCond不适用于 aRedirectMatch但 a RewriteRule

RewriteCond %{QUERY_STRING}  page=\d+ [NC]
RedirectRule ^mobile/(.*)$ http://m.example.com/$1? [R=301,L]

[OR]被删除是因为只有一个RewriteCond并且[1-9]+被更改为包含10等。请注意,放置一个RewriteCond表示仅当您page=在查询字符串中有重定向时。如果无论如何您都需要重定向,请删除条件并保留规则。

于 2013-08-03T14:34:50.083 回答
0
RedirectMatch 301 ^/mobile/(.*)$ http://m.example.com/$1?

似乎可以解决问题。我已经牺牲了页面重定向的需要。

于 2013-08-06T13:46:32.253 回答
0

清除浏览器缓存或使用其他浏览器进行测试。

通过启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_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=302R=301. R=301在测试你的 mod_rewrite 规则时避免使用(永久重定向)。

于 2013-08-06T14:03:45.790 回答