如何在.htaccess文件中保留其他参数的同时重写URL?

时间:2013-05-13 08:57:22

标签: regex .htaccess mod-rewrite url-rewriting

我有标准的htaccess,只需捕获所有内容并将其放入一个url参数中,稍后在代码中处理...

RewriteRule ^config/ - [F]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

我使用“漂亮”的url params,如

/some/route/param1/value1/param2/value2 

但现在我需要能够添加“常规”网址参数,如

/some/route/param1/value1?param2=value2&param3=value3 etc

我尝试添加

RewriteRule ^(.*)\?(.*)$ index.php?q=$1&p=$2 [L,QSA]

在现有规则之前,但它将无法正常工作(我怀疑它只适用于一个参数)。

1 个答案:

答案 0 :(得分:2)

试试这个:

RewriteRule ^([^?]+)\?(.*)$ index.php?q=$1&p=$2 [L,QSA]