过去两个小时我一直在努力和测试,并且根本无法绕过整个RegEx的东西,以便找到适当的解决方案......
由于最近重新启动,我正尝试将旧网站中的几个网址重定向到新网站。
This is the current state of things / a demo of my RegEx
基本上它看起来像这样:
.+(\/es|\/de|\/en)?\/(legal)(.+)?
我的问题是像https://example.com/es/projects/legal-yeah
这样的网址也是匹配的,这看起来很有意义,但不是我想要实现的......
如何执行仅匹配中间没有任何内容的网址语言字符串的第一部分(de / en / es / empty)和第二部分(/ legal)的测试?
非常感谢您分享您的想法,感谢它!
答案 0 :(得分:1)
通过使用行尾锚$
并在合法后明确添加(\/.*)
,您可以实现所需:
.+(\/es|\/de|\/en)?\/(legal)(\/.+)?$
答案 1 :(得分:0)
这个最终的RegEx规则匹配我想要的URL - 忽略" legal" -string(在本例中)可能出现在另一个URL上的任何其他出现其他一些级别和模糊的'足以包括所有语言案例,即使没有出现语言字符串。
最终的诀窍是强制规则在其他内容之前寻找TLD,因此它只允许包含第一级URL。
更新:由于重定向引擎/插件仅使用了URL路径,不包括域(see GitHub issue),因此我的第一个解决方案无效。因此,我不能根据需要与DOT匹配。
现在规则正在关注字符串的开头,并且不接受目标URL-slug前面的任何语言字符串,这反过来会消除误报。
感谢@Xatenev指出了我正确的方向!