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 没有被调用