我有这个例子:
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等?
提前谢谢我的英语
答案 0 :(得分:1)
RewriteCond %{QUERY_STRING} game=MyGame RewriteRule ^games/freeGames?$ /flash/games/%1? [L,R=301]
在此代码中,%1
反向引用始终为空,因为您尚未在前面的RewriteCond
指令中定义捕获的组(即带括号的子模式)。因此,生成的网址总是 /flash/games/
(我认为您的“主页”)。
您需要通过括起括号中的字符串/正则表达来定义捕获的组,例如:
RewriteCond %{QUERY_STRING} game=(MyGame)
另一个问题:%{QUERY_STRING}和数组可能有吗?例如MyGame,OtherGame,Biliard等?
如果您需要匹配多个项目,则可以在捕获的组中使用交替。例如:
RewriteCond %{QUERY_STRING} game=(MyGame|OtherGame|Biliard|etc.)
现在它将匹配“MyGame”或“OtherGame”或“Biliard”等,并且%1
反向引用中保存了所有匹配项。