如何防止在 301 重定向中追加参数
How to prevent append parameter in 301 redirect
我在 .htaacess 文件中使用这个重定向命令。
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?
,它只有一个额外的?
不要使用 RedirectMatch
因为它没有办法丢弃 old/previous 查询字符串。
最好使用这样的 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 或查询字符串的内部重写规则之前起作用。
我在 .htaacess 文件中使用这个重定向命令。
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?
,它只有一个额外的?
不要使用 RedirectMatch
因为它没有办法丢弃 old/previous 查询字符串。
最好使用这样的 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 或查询字符串的内部重写规则之前起作用。