【问题标题】:Remove query strings from 301 redirect从 301 重定向中删除查询字符串
【发布时间】:2012-05-29 07:32:23
【问题描述】:

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

http://www.oldsite.com/about/index.cfm?fuseaction=cor_av&artID=5049

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

http://www.newsite.com/info

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

redirectMatch 301 ^/about/ http://www.newsite.com/info  

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

http://www.newsite.com/info/?fuseaction=cor_av&artID=5049 

我绝对不是 Apache/301 专家,不知道如何解决这个问题。我只想从 ?开。

非常感谢任何帮助。

【问题讨论】:

    标签: apache redirect query-string http-status-code-301


    【解决方案1】:

    两个选项:

    redirectMatch 301 ^/about/ http://www.newsite.com/info? 
    

    或:

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

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

    【讨论】:

    • 请注意,在 Apache >= 2.4 上,您可以使用 QSD 标志而不是添加结束问号:RewriteRule ^about/(.*) http://www.newsite.com/info [QSD,L,R=301]
    【解决方案2】:

    尝试将此代码添加到为oldsite.com指定的.htaccess中:

    RewriteCond %{REQUEST_URI} ^/about/index.cfm$
    RewriteRule ^(.+) http://www.newsite.com/info/ [R=301,QSA]
    

    跟进?

    【讨论】:

    • 不,QSA a将旧查询字符串附加到新 url。要d放弃它,请使用标志QSD (apache >=2.4) 或仅添加?,如已接受的答案中所示。见Apache RewriteRule Flags
    • 是的,应该用 QSD 替换 QSA。此选项从 apache 2.4 开始可用。
    猜你喜欢
    • 2012-08-16
    • 2014-11-11
    • 1970-01-01
    • 2014-02-02
    • 2013-06-21
    • 2012-05-30
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多