从301重定向中删除查询字符串

Ash*_*Ash 9 apache redirect query-string http-status-code-301

我正在努力为最初使用查询字符串构建的网站创建适当的301重定向.旧的URL结构如下所示:

http://www.oldsite.com/about/index.cfm?fuseaction=cor_av&artID=5049
Run Code Online (Sandbox Code Playgroud)

我想将整个子文件夹(名为"about")重定向到新域上的新页面.新域名的URL如下所示:

http://www.newsite.com/info
Run Code Online (Sandbox Code Playgroud)

所以,我设置了一个如下所示的重定向:

redirectMatch 301 ^/about/ http://www.newsite.com/info  
Run Code Online (Sandbox Code Playgroud)

它重定向很好,但它保持附加原始URL字符串,因此新的URL在浏览器中看起来像这样:

http://www.newsite.com/info/?fuseaction=cor_av&artID=5049 
Run Code Online (Sandbox Code Playgroud)

我绝对不够Apache/301专家知道如何解决这个问题.我只是想剥掉一切从?上.

真的很感激任何帮助.

小智 31

两种选择:

redirectMatch 301 ^/about/ http://www.newsite.com/info? 
Run Code Online (Sandbox Code Playgroud)

要么:

RewriteEngine on
RewriteRule ^about/(.*) http://www.newsite.com/info? [L,R=301]
Run Code Online (Sandbox Code Playgroud)

最后的问号似乎是关键的一点.第二个看起来更干净(首先在您的URL末尾留下一个问号)

  • 请注意,在Apache> = 2.4时,您可以使用QSD标志而不是添加结束问号:`RewriteRule ^ about /(.*)http://newsite.com/info [`QSD`,L,R = 301]` (3认同)