我想将带斜杠的 URL 重定向到不带尾部斜杠的路径。因此 /some-url/ 到 /some-url 会出现重复内容问题
其余的 URL,例如
/some-url.xml
/some-url?
/some-url/?
/some-url?q=v
/some-url/?q=v
/some-url
应该保持不变。
我想要与以下问题完全相反。如何在 nginx 中配置重定向到带有斜杠的 url?
请考虑在您的服务器块内尝试:
rewrite ^/(.*)/$ /$1 permanent;
via: https://www.scalescale.com/tips/nginx/nginx-remove-trailing-slash/
这将查找请求 URI 以“/”开头并以斜杠结尾的任何内容(重写后搜索部分末尾的“$”),并将其替换为开头的“/”和 URI末尾没有结束斜杠。最后一部分表明它将提供 301 重定向服务。
更新:
为了避免从带有 GET 参数的 URI 中删除斜杠,请尝试:
if ($query_string != "") {
rewrite ^/(.*)/$ /$1 permanent;
}
通常不建议使用 if 语句,但如果您要使用这样的映射:
map $query_string $trailing_slash {
"" ""
default "/";
}
rewrite ^/(.*)/$ /$1$trailing_slash permanent;
它会导致任何带有查询的字符串无限重定向,因为它会重定向到自身(源和目标都会有尾部斜杠)。因此,我们需要使用条件来进行重写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)