重写规则不工作回到参考
问题描述:
我有这样的例子:重写规则不工作回到参考
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}
和array?例如MyGame,OtherGame,Biliard等?
THX提前对不起我的英语
答
RewriteCond %{QUERY_STRING} game=MyGame RewriteRule ^games/freeGames?$ /flash/games/%1? [L,R=301]
在这段代码中,%1
反向引用总是空的,因为你没有在规定的捕获组(即parenthesised子模式)前面的RewriteCond
指令。所以,由此产生的URL是总是/flash/games/
(我认为你的“主页”)。
需要通过围绕在括号中的字符串/正则表达式来定义所捕获的组),例如:
RewriteCond %{QUERY_STRING} game=(MyGame)
另一个问题是:有可能具有在%{QUERY_STRING}和数组?例如MyGame,OtherGame,Biliard等?
如果您需要匹配多个项目,则可以在捕获的组中使用替换。例如:
RewriteCond %{QUERY_STRING} game=(MyGame|OtherGame|Biliard|etc.)
现在它将匹配“MyGame”或“OtherGame”或“Biliard”等,不管匹配保存在%1
反向引用。
+1
魔法@MrWhite ....谢谢。 – user7424312
尝试用$ 1代替%1 – Bernhard
@Bernhard同样的...... – user7424312