htaccess mod_rewrite子域

时间:2013-08-03 12:53:25

标签: .htaccess subdomain

我有一个移动网址,我想重定向到子网域。

即。 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

任何帮助表示赞赏

3 个答案:

答案 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(永久重定向)。