.htaccess 301重定向由于问号符号“?”

时间:2015-11-26 01:06:38

标签: apache .htaccess mod-rewrite redirect http-status-code-301

我使用以下代码到我的旧网站,301将所有流量重定向到我的新网站。

  

.htaccess - 位于oldsite.com

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^newsite.com [NC] 
RewriteRule ^(.*)$ http://newsite.com/ [R=301,L]
</IfModule>
Redirect 301 / http://newsite.com/

如果网址不包含问题掩码符号“?”,则上述.htaccess代码才有效。

E.g。

示例1正常

  

http://oldsite.com/whatever    - &gt; 301重定向到http://newsite.com/

但是,如果我要进入:

示例2不行

  

http://oldsite.com/?whatever    - &gt; 301重定向到http://newsite.com/?whatever

它应该重定向到索引站点,就像那样

  

http://oldsite.com/?whatever    - &gt; 301重定向到http://newsite.com/

示例3不正常

  

http://oldsite.com/whatever?something    - &gt; 301重定向到http://newsite.com/?something

它应该重定向到索引站点,就像那样

  

http://oldsite.com/whatever?something    - &gt; 301重定向到http://newsite.com/

  • 为什么会这样?

  • 我该如何面对这个问题?

1 个答案:

答案 0 :(得分:2)

重定向和重写规则都是多余的。使用这样的规则。要删除query string,您需要在重写的末尾添加问号。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^newsite.com [NC] 
RewriteRule ^(.*)$ http://newsite.com/? [R=301,L]
</IfModule>