RewriteRule上的Apache正则表达式,"或"语法

Ham*_*eza 4 regex apache

当一个url以"word1"或"word2"结尾时,我在第一次斜杠之前得到所有的字符串,并且使用这段代码:

RewriteRule ^(.+)/word1|word2/?$            index.php?query=$1 [NC]
Run Code Online (Sandbox Code Playgroud)

我没有任何问题,url在他的两端有"word1",但如果url以"word2"结尾,Apache不会向"查询"变量返回任何值

Qta*_*tax 5

您需要在表达式中对替换进行分组:

^(.+)/(?:word1|word2)/?$
Run Code Online (Sandbox Code Playgroud)

没有分组,你的表达意味着:

^(.+)/word1 要么 word2/?$

  • `(?:regex)`是一个非捕获组,与`(regex)`相同,只是它没有捕获任何东西. (2认同)