如何使用RewriteCond BackReference%NC

时间:2009-03-11 07:17:48

标签: apache mod-rewrite

我的httpd.conf

中有以下规则
   RewriteEngine on
       RewriteBase /
       RewriteCond %{QUERY_STRING} password=* 
       RewriteCond %{QUERY_STRING} bi2=(.*) 
       RewriteCond %{REQUEST_URI}  /myGet.php(.*)$
       RewriteRule ^(.*)$  http://blog.myexample%1.com/$1

然而,当我执行请求URI

  

/myGet.php?password=john&bi2=67

我被重定向到

  

http://blog.myexample.com/myGet.php?password=john&bi2=67

而不是

  

http://blog.myexample67.com/myGet.php?password=john&bi2=67

似乎RewriteCond BackReferencing的%N无效。 虽然$ N

1 个答案:

答案 0 :(得分:3)

更改顺序或RewriteCond指令,以便最后一个指令是您想要信息的指令:

RewriteCond %{QUERY_STRING} password=* 
RewriteCond %{REQUEST_URI}  /myGet.php(.*)$
RewriteCond %{QUERY_STRING} bi2=(.*)
RewriteRule ^(.*)$  http://blog.myexample%1.com/$1

但我建议:

RewriteCond %{QUERY_STRING} password=
RewriteCond %{QUERY_STRING} bi2=([^&]*)
RewriteRule ^/myGet\.php.*$  http://blog.myexample%1.com$0