regex - 正则表达式在 nginx 映射中无法按预期工作
问题描述
我正在尝试在 nginx 中实现一些 URL 重写规则。我使用类似的正则表达式来捕获有趣的组,它在 regex101 和 IIS 重写规则的正则表达式中完美运行,但在 nginx 映射中不起作用。我不确切知道 nginx 是否有特定的语法,我找不到。
map $request_uri $new_uri {
default '';
# this works without the query string part
#"~^/r/([\S]+)\.jpg$" http://www.jackli.space/$1.jpg;
"~^/r/([\S]+).(png|jpg|jpeg)\?a=(\d+)$" http://www.jackli.space/$1.$2?x=$3;
}
我测试的示例图像 src url
<img src="r/images/bridge.jpg?a=100" />
解决方案
您可以使用命名的捕获组尝试此块:
map $request_uri $new_uri {
default 0;
# this works without the query string part
#"~^/r/([\S]+)\.jpg$" http://www.jackli.space/$1.jpg;
"~^/r/(?<file>\S+)\.(?<ext>png|jpg|jpe?g)\?a=((?<a>\d+)$" http://www.jackli.space/$file.$ext?x=$a;
}
推荐阅读
- angular - Chrome 中的 Angular 6 PWA 504 错误。基础href问题?
- python - 在 Python 中逐行读取文件
- javascript - 根据条件自动选择单选按钮
- directx-11 - 不在 dx9 兼容模式下时禁用 DX9 风格的本质?
- python - 在 Pandas DatetimeIndex 中重新创建丢失的秒数 + 毫秒数
- javascript - 全局声明 forEach 并在函数中使用它
- select - 如何将自定义布尔查询添加到 influxDb
- sql - Parsing JSON file in Snowflake Database
- python - 使用python抓取时获取javascript变量值
- c - I don't know what is wrong with this loop parallelization