.htaccess RewriteRule反向引用顺序

时间:2012-07-10 08:49:44

标签: .htaccess mod-rewrite

我对htaccess重写规则有疑问。

是否可以转换此网址:

www.site.com/en/test

在这样的事情中:

www.site.com/test.php?language=en

我尝试使用此RewriteRule

RewriteRule ^([a-z][a-z])/(.*)$ $1.php?language=$2

但是在一些在线测试工具中,结果URL是:

www.site.com/en.php?language=test

提前谢谢你。 垫

1 个答案:

答案 0 :(得分:0)

这种混淆的原因是你已经扭转了比赛。当您使用引用时,匹配中的第一个引用始终为$ 1,第二个引用为$ 2,依此类推。

这就是你所做的,只看括号:

([a-z][a-z]) = first match, places "en" in $1 
(.*) = second match, places "test" in $2

所以你只需要在输出中反转它们,如下所示:

RewriteRule ^([a-z][a-z])/(.*)$ $2.php?language=$1