regex - Nginx 在匹配之前是否取消引用/转义 URL 字符?

标签 regex nginx

当我想要匹配包含空格的 URL 时,空格可能会编码为 %20+。为了在 Nginx 正则表达式中匹配它,我需要使用什么模式?

Nginx 是否按原样传递 URL?

(?:%20|\+| )

或者,Nginx 是否首先执行一些取消引用或取消转义的操作?

(?:\+|)

或者+是否标准化?

最佳答案

虽然我快速浏览了一下 Nginx 文档并没有找到任何引用资料,但从我的测试来看,Nginx 将 HTTP 代码规范化为 unicode,使得“%20”与“\s”匹配。 '+' 已经在 unicode 中,不需要标准化。

例如。 /route/the%20test

应与(?:\s)

匹配

但是,我倾向于使用更安全的方法,并使用类似以下内容的内容:(?:(\s|\%20))

关于regex - Nginx 在匹配之前是否取消引用/转义 URL 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14127087/

相关文章:

php - nginx/fastcgi 504 网关错误,增加 fastcgi_read_timeout 没有帮助

Nginx websocket 代理在 2 分钟后断开连接

python - python中的正则表达式用句点代替由整数界定的逗号

python - 使用 Pandas 中的 apply 函数来使用每行的正则表达式计数

javascript - 根据换行符将字符串数据拆分为数组,然后是两位数

python - 使用正则表达式过滤列表时为 "TypeError: expected string or buffer"

ubuntu - Nginx 在配置中找不到时重定向到第一个按字母顺序排列的站点

node.js - 为以下应用程序结构编写 docker 的正确方法是什么?

php - 如何从 Codeigniter (nginx) 中删除 index.php

regex - 如何在 RegEx 模式的 RegEx 匹配中包含第一个字符?