如何防止 301 重定向中的附加参数

Posted

技术标签:

【中文标题】如何防止 301 重定向中的附加参数【英文标题】:How to prevent append parameter in 301 redirect 【发布时间】:2022-01-17 13:15:15 【问题描述】:

我在 .htaac​​ess 文件中使用此重定向命令。

Redirect 301 /old-path.html /new-path.html

它告诉我/new-path.html?page=old-path

概率,附加参数是我的 htaccess 中一些 RewriteRule 和 RewiteCond 的结果。

我不喜欢编辑我原来的 htaccess 代码。

我发现下面的命令非常接近结果。

RedirectMatch 301 /old-path.html /new-path.html?

结果是/new-path.html?,它只有一个额外的?

【问题讨论】:

【参考方案1】:

不要使用RedirectMatch,因为它无法丢弃旧的/以前的查询字符串。

最好像这样使用RewriteRule

RewriteRule ^old-path\.html$ /new-path.html? [L,R=301,NC]

在目标中尾随? 将丢弃任何查询字符串。

在 Apache 2.4+ 上,您还可以使用:

RewriteRule ^old-path\.html$ /new-path.html [L,R=301,NC,QSD]

作为一个经验法则,将所有R=... 规则放在您的 .htaccess 之上,然后放在其他规则之前。这将使这些规则在其他可能修改请求 URI 或查询字符串的内部重写规则之前起作用。

【讨论】:

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

.htaccess 中的 301 重定向将旧文件路径/名称附加到新 url

301重定向后如何防止chrome从磁盘缓存中加载index.html

使用查询参数和 URL 中的 ~ 进行 301 重定向

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

使用HttpClient,在301的情况下如何防止自动重定向并获取原始状态码和转发Url [重复]

如何使用动态 URL 进行 301 重定向并为新 URL 保留一些价值