我试图在我的URL中添加一个连字符-在ID和片段之间,并且我使用了这样的重写规则:
rewrite ^/(.*)/(.*)/(.*-)(.*)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$3&slug=$4 last;如果我把"-“改成这样:
rewrite ^/(.*)/(.*)/(.*~)(.*)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$3&slug=$4 last;或者这个:
rewrite ^/(.*)/(.*)/(.*)~(.*)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$3&slug=$4 last;一切都很完美!
但是,我的任何组合都不适用于连字符符号。
我意识到这是因为连字符在REGEX中是一个“技术”符号。但是在这种情况下,我怎么能得到这样的URL:
https://example.com/../../../35-my-long-slug/其中35是页面ID,我的长鼻涕虫是鼻涕虫。我需要他们之间的"-“符号,而不是"+”,“不”,不"~“。我需要连字符"-“符号!
我正在尝试任何变体,例如:
(.*[\-])(.*)
(.*)[\-](.*)等。
发布于 2019-11-19 15:15:25
根据你的例子:
https://example.com/../../../35-my-long-slug/您缺少了一个捕获组,您应该使ID捕获延迟,这样.*就会在第一个连字符而不是最后一个连字符处停止捕获。实际上,您应该让所有的.*都变懒,这样他们就不会因为显式捕获/而越界了。
rewrite ^/(.*?)/(.*?)/(.*?)/(.*?)-(.*?)/$ /index.php?type=item&item_type=$1&primary_cat=$2&id=$4&slug=$5 last;我不确定这如何通过$3影响您的$3,但是ID应该在$4中,而段塞应该在$5中。
https://stackoverflow.com/questions/58936619
复制相似问题