重写规则无法返回参考

Rewrite Rule not working back reference

我有这个例子:

RewriteCond %{QUERY_STRING} game=MyGame
RewriteRule ^games/freeGames?$ /flash/games/%1? [L,R=301]

我被重定向到主页。但是如果我使用 :

RewriteCond %{QUERY_STRING} game=MyGame
RewriteRule ^games/freeGames?$ /flash/games/MyGame? [L,R=301]

重定向工作正常。你能帮帮我吗?

另一个问题:%{QUERY_STRING} 和数组中可以有吗?例如 MyGame、OtherGame、Biliard 等?

提前致谢,抱歉我的英语不好

RewriteCond %{QUERY_STRING} game=MyGame
RewriteRule ^games/freeGames?$ /flash/games/%1? [L,R=301]

在此代码中,%1 反向引用始终为空,因为您尚未在前面的 RewriteCond 指令中定义捕获组(即带括号的子模式)。因此,结果 URL 是 always /flash/games/(我认为你的 "homepage")。

您需要将string/regex括在括号中来定义捕获组,例如:

RewriteCond %{QUERY_STRING} game=(MyGame)

Another question : is possible to have in %{QUERY_STRING} and array ? For example MyGame, OtherGame, Biliard, etc ?

如果您需要匹配多个项目,那么您可以在捕获的组中使用交替。例如:

RewriteCond %{QUERY_STRING} game=(MyGame|OtherGame|Biliard|etc.)

现在它将匹配 "MyGame" 或 "OtherGame" 或 "Biliard" 等,并且任何匹配都保存在 %1 反向引用中。