php.htaccessurl重写不正确的参数


php .htaccess url rewrite incorrect parameters

我在使用.htaccess重写引擎时遇到了一个奇怪的问题。

我有一个简单的规则:

RewriteEngine On
RewriteRule ^(.'*)/(.'*).php$ pages/test.php?lang1=$1&page1=$2 [L]

在pages/test.php中,我放入了以下php代码:

echo('lang: '.$_GET['lang1'].'< br />');    
echo('page: '.$_GET['page1'].'< br />');    
echo('querystring: '.$_SERVER['QUERY_STRING']);

所以,打电话时http://test.local/en-US/something.php,我希望有这样的东西:

lang: en-US    
page: something    
querystring: lang1=en-US&page1=something

相反,这是我从页面上得到的奇怪输出:

lang: pages    
page: test    
querystring: lang1=pages&page1=test

有人能帮我吗?

如果因为创建了一个循环而得到结果,请尝试使用以下行:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/pages/test'.php$
RewriteRule ^(.*)/(.*)'.php$ /pages/test.php?lang1=$1&page1=$2 [L]

您也可以使用QSA标志:

RewriteRule ^(.*)/(.*).php$ pages/test.php?lang1=$1&page1=$2 [QSA,L]

当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志可以组合查询字符串。

http://httpd.apache.org/docs/current/rewrite/flags.html