首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NGINX重写规则中添加连字符

在NGINX重写规则中添加连字符
EN

Stack Overflow用户
提问于 2019-11-19 14:46:00
回答 1查看 492关注 0票数 0

我试图在我的URL中添加一个连字符-在ID和片段之间,并且我使用了这样的重写规则:

代码语言:javascript
复制
rewrite  ^/(.*)/(.*)/(.*-)(.*)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$3&slug=$4 last;

如果我把"-“改成这样:

代码语言:javascript
复制
rewrite  ^/(.*)/(.*)/(.*~)(.*)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$3&slug=$4 last;

或者这个:

代码语言:javascript
复制
rewrite  ^/(.*)/(.*)/(.*)~(.*)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$3&slug=$4 last;

一切都很完美!

但是,我的任何组合都不适用于连字符符号。

我意识到这是因为连字符在REGEX中是一个“技术”符号。但是在这种情况下,我怎么能得到这样的URL:

代码语言:javascript
复制
https://example.com/../../../35-my-long-slug/

其中35是页面ID,我的长鼻涕虫是鼻涕虫。我需要他们之间的"-“符号,而不是"+”,“不”,不"~“。我需要连字符"-“符号!

我正在尝试任何变体,例如:

代码语言:javascript
复制
(.*[\-])(.*)
(.*)[\-](.*)

等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-19 15:15:25

根据你的例子:

代码语言:javascript
复制
https://example.com/../../../35-my-long-slug/

您缺少了一个捕获组,您应该使ID捕获延迟,这样.*就会在第一个连字符而不是最后一个连字符处停止捕获。实际上,您应该让所有的.*都变懒,这样他们就不会因为显式捕获/而越界了。

代码语言:javascript
复制
rewrite  ^/(.*?)/(.*?)/(.*?)/(.*?)-(.*?)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$4&slug=$5 last;

我不确定这如何通过$3影响您的$3,但是ID应该在$4中,而段塞应该在$5中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58936619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档