我们希望 nginx 将带有尾部斜杠的 url 永久重定向到非斜杠 url。我们发现:https : //www.scalescale.com/tips/nginx/nginx-remove-trailing-slash/
所以我们把:
rewrite ^/(.*)/$ /$ permanent;
在nginx中,但问题是它一定不适用于某些文件夹。所以我们发现:在忽略某些特定情况的情况下删除 nginx 中的尾部斜杠
我们将其更改为:
rewrite ^/(?!admin)(.*)/$ /$ permanent;
但随后服务器无法启动:
invalid number of arguments in "rewrite" directive in /opt/www/folder/.nginx:5
并且:我们希望排除 2 个文件夹。从重写规则中排除文件夹的正确正则表达式是什么?
谢谢,
巴特
编辑谁通过谷歌来到这里:
答案有效......唯一奇怪的是标准在没有 $1 的情况下工作:
rewrite ^/(.*)/$ /$ permanent;
现在我们进行了排除,如果没有 $1,它就不再起作用了……但这现在有效:
# remove trailing slashes
rewrite ^/(?!folder1|folder2)(.*)/$ /$1 permanent;
我怀疑这只是一个错字。这/$
看起来应该是/$1
:
rewrite ^/(?!admin)(.*)/$ /$1 permanent;
如果您有多个要排除的 URI,请尝试类似
rewrite ^/(?!admin|secure|raw)(.*)/$ /$1 permanent;
nginx
使用与 Perl 相同的正则表达式库,所以你可以从命令行测试这些东西
perl -ple 's#^/(?!admin|secure|raw)(.*)/$#/$1#'
只需输入示例 URI。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句