繁体   English   中英

Nginx位置组捕获+重写

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM