【问题标题】:301 Redirect GET parameter301 重定向 GET 参数
【发布时间】:2016-10-09 20:21:26
【问题描述】:

我正在尝试重定向这样的网址:

http://originalwebsite.com/event/detail.html?id=13

http://newwebsite.com/events

我在.htaccess 文件中尝试了以下内容:

redirect 301 /event/detail.html?id=13 /events

但它不起作用......

我也试过这个:

RewriteCond %{QUERY_STRING} /event/detail.html?id=13
RewriteRule (.*) /events [R=301,L] 

谁能告诉我我做错了什么?这是一个非常糟糕的标准重定向......

GET这个参数是不需要传的,我只是想把旧页面指向新页面。

非常感谢

经过进一步调查,我发现您无法在 Redirect 中传递变量,因此我将代码更改为以下内容:

RewriteCond %{QUERY_STRING} id=13$
RewriteRule (.*) /events? [L,R=301]   

这是可行的,但是我遇到的问题是,此重定向适用于任何附加了 id=13 的 URL。我需要更具体,因为我想将 /event/detail.html?id=13 重定向到 /events

【问题讨论】:

    标签: .htaccess http-status-code-301 http-redirect


    【解决方案1】:

    (.*) 是一个包罗万象的模式,所以如果你的规则只适用于特定的 uri,你可以在 RewriteRule 中匹配那个 uri

    RewriteCond %{QUERY_STRING} id=13$
    RewriteRule ^event/detail\.html$ /events? [L,R=301]
    

    【讨论】:

    • 感谢它完美运行。为了澄清我上面的代码是有效的,但是因为我使用了(.*),它会匹配到所有 URL 的重定向是正确的吗?
    猜你喜欢
    • 1970-01-01
    • 2016-01-10
    • 2021-12-28
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2012-02-28
    • 1970-01-01
    相关资源
    最近更新 更多