如何合并正则表达式规则实现WordPress重定向需求
WordPress重定向正则规则合并方案
直接用以下正则即可同时满足你的需求,匹配**不包含完整json子串、不含.、不含?且结尾不是/**的URL:
^((?!json)[^.?])*[^/]$
规则拆解
^:锚定URL的起始位置((?!json)[^.?])*:[^.?]:匹配任意一个不是.或?的字符(允许/等其他合法URL字符)(?!json):否定前瞻,确保从当前匹配位置开始,后续不会出现完整的json子串*:允许上述模式重复0次或多次(适配不同长度的URL)
[^/]$:锚定URL的结束位置,确保最后一个字符不是/
匹配验证
- 符合匹配要求的URL:
/wp-jsn/aberdeen:无json子串、无./?、结尾非/→ 匹配成功/aberdeen:同上 → 匹配成功
- 不符合要求的URL:
/wp-json/aberdeen:包含json子串 → 匹配失败/aberdeen.css:包含.→ 匹配失败/aberdeen?foobar=1:包含?→ 匹配失败
为什么之前的尝试无效
你用的[^.?|json]是单个字符的排除集,它会直接排除所有包含j/s/o/n单个字符的URL,而非仅排除完整的json子串,这和你的需求完全不符。否定前瞻(?!json)才是用来排除完整子串的正确方式。
内容的提问来源于stack exchange,提问作者GibsonFX
相关产品推荐
相关产品推荐

