[英]Nginx location group capture + rewrite
我正在尝试在 Nginx 位置块中进行组捕获,但它对我不起作用。
我正在尝试做的甚至可能吗?
location ~* /(?<cat>cars|trucks|bikes|motorcycle|quads) {
rewrite ^/$cat/([0-9]+)(.*)$ /page.php?id=$1 last;
}
我收到的错误消息是:
"^/$cat/([0-9]+)(.*)$" 与 "/cars/120/new-car-rentals/" 不匹配
我的类别比我发布的要多得多,并试图防止为每个特定类别名称编写 5 次重写。
任何帮助将不胜感激。
我不熟悉这种特殊的语法,但根据我与其他人的经验,您是否可能只需要转义您正在使用的正斜杠?
location ~* \/(?<cat>cars|trucks|bikes|motorcycle|quads) {
rewrite ^\/$cat\/([0-9]+)(.*)$ /page.php?id=$1 last;
}
注意location
正则表达式中的命名捕获:如果要使用此处捕获的值,则必须使用命名语法(?<name>)
,数字不起作用。
我通过这样做解决了这个问题:
location ~* /(cars|trucks|bikes|motorcycle|quad-bikes) {
rewrite ^/([a-zA-Z-]+)/([0-9]+)(.*)$ /page.php?id=$2 last;
...
...
}
正则表达式 ([a-zA-Z-]+) 允许我在类别/页面名称中使用字符 az(不区分大小写)和可能的破折号。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.