301 重定向 GET 参数

Posted

技术标签:

【中文标题】301 重定向 GET 参数【英文标题】:301 Redirect GET parameter 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

感谢它完美运行。为了澄清我上面的代码是有效的,但是因为我使用了(.*),它会匹配到所有 URL 的重定向是正确的吗?

以上是关于301 重定向 GET 参数的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 中的 301 重定向错误,显示“Bots Get Naked Version”而不是重定向

使用 express 和 node.js 重定向 301。 GET 没有被调用

.htaccess 仅在 GET 参数存在时重定向

301 基于 .htaccess 中的 GET 变量重定向 URL

如何在 nginx 服务器上做 301 重定向

重定向