Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 扩展现有正则表达式以使其与URL部分不匹配_Regex_Mod Rewrite_Regex Lookarounds - Fatal编程技术网

Regex 扩展现有正则表达式以使其与URL部分不匹配

Regex 扩展现有正则表达式以使其与URL部分不匹配,regex,mod-rewrite,regex-lookarounds,Regex,Mod Rewrite,Regex Lookarounds,我试图简化的网站的一个混乱的遗留部分使用了许多URL重写来路由。现在,我有一个新功能的问题,因为我需要为上述功能使用的重写无法工作,因为旧的重写是旧网站功能所必需的 例如,“新功能”URLhttps://www.example.com/new-feature/something与旧版重写相匹配: (.?.+)(/[0-9]+)?/?$ 。。。还有其他一些 我尝试用一个改进版的消极前瞻扩展遗留重写,如建议的: ^(?。*(新功能))(.?+)(/[0-9]+)?/?$编辑2:这在语法上是否正确 。

我试图简化的网站的一个混乱的遗留部分使用了许多URL重写来路由。现在,我有一个新功能的问题,因为我需要为上述功能使用的重写无法工作,因为旧的重写是旧网站功能所必需的

例如,“新功能”URL
https://www.example.com/new-feature/something
与旧版重写相匹配:

(.?.+)(/[0-9]+)?/?$

。。。还有其他一些

我尝试用一个改进版的消极前瞻扩展遗留重写,如建议的:

^(?。*(新功能))(.?+)(/[0-9]+)?/?$
编辑2:这在语法上是否正确

。。。但这打破了我的特色和传统

如何扩展旧版重写而不影响其功能

谢谢

编辑: 系统是WordPress,重写是在基于WordPress类的旧系统中完成的。
我很高兴不改变这一点,因为有80多条规则。遗憾的是,这个插件看起来并不尊重顺序和[L]标志——或者我不知道如何做到这一点

好吧,这有点痛,但我想以风格结束这一切

例如。在mod_rewrite环境中,URL中的连字符和斜杠(如“/new feature/something”)不需要转义。因此,如果您使用在线工具(希望转义)测试正则表达式,请记住删除转义字符,例如“-”和“/”

因此,我的“解决方案”是从正则表达式中删除转义字符

感谢大家的关注,很抱歉浪费了您的时间:-/


干杯

您在PHP或Apache mod_rewrite中使用这些吗?在Apache中,我只是将新特性的正则表达式放在遗留正则表达式之前,并将其声明为最后一次重写。在这种情况下,仅当新功能以前不匹配时,才能到达旧正则表达式。这些规则适用于mod_rewrite。@FlorianSchwalm请参阅编辑。。。看起来我不能将重写声明为最后一次(你刚才说的是[L]标志,对吗?)。是的,我的意思是使用[L]标志进行Apache mod_重写。我不熟悉这个WP插件,它似乎也被作者抛弃了。我建议您与他联系,看看他是想提供支持,还是想迁移应用程序的这一遗留部分。@FlorianSchwalm我知道插件不再更新,但它涵盖了WP中未更新的部分(WP_Rewrite是引入的,自WP 1.5.0以来没有更改)。该网站是一个“深奥”的门户网站,我的客户没有多少钱,所以我怀疑迁移在这里是可行的。无论如何,谢谢你的想法。