正则表达式 nginx 删除尾部斜杠不适用于 2 个文件夹?

巴特·豪斯曼

我们希望 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Nginx位置不适用于正则表达式

Laravel Valet Nginx位置正则表达式不适用于Mac Catalina

正则表达式不适用于1个参数

正则表达式搜索适用于cypher解析器1.9,不适用于版本2

Nginx 正则表达式太长的文件名

正则表达式 - 使用正则表达式查找 2 个或更多单词

用于搜索特定位置的 2 个连续字母的正则表达式

用于验证2个字母数字的正则表达式

用于检查是否在2个范围内找到IP的正则表达式

使用正则表达式替换/删除 2 个 javascript 注释之间的文本

正则表达式删除2个分号Perl之间的数据

删除 2 个正则表达式模式之间的所有字符

正则表达式一次删除2个部分的url

正则表达式向 URL 添加尾部斜杠,除非 URL 后跟特定的子文件夹

用于新文件夹字符的VBA Excel宏的正则表达式

如何从Linux终端使用正则表达式删除文件夹

正则表达式是否将除2个文件夹之外的所有内容都包含在根文件夹下?

Nginx位置指令与正则表达式提取文件夹名称并在try_files中使用

javascript正则表达式2个可能的值

仅2个字母的正则表达式

正则表达式匹配2个或更多单词

重构 2 个正则表达式

Javascript正则表达式以匹配2个URL

在正则表达式中合并2个条件

合并2个正则表达式模式

结合2个正则表达式

匹配2个单词的正则表达式

第二个管道运算符不适用于python中的正则表达式

为什么文本文件中的这个正则表达式不适用于 smartmatch?