用于可选查询参数的Apache重写规则

时间:2014-03-08 09:30:24

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

即使经过漫长的阅读,Apache重写文档仍然让我感到困惑。

目前我正在使用以下.htaccess网址重写规则:

RewriteRule ^([_0-9a-zA-Z-]+)\.html$ index.php?a=p&p=$1 [nc]

这会重写像

这样的内容
http://www.website.com/thepagename.html

http://www.website.com/index.php?a=p&p=thepagename

工作正常。

现在我需要对其进行修改以允许可选查询参数,该参数可能或者不能添加到原始(未重写)URL。 E.g:

http://www.website.com/thepagename.html?req=login

甚至

http://www.website.com/thepagename.html?req=login&usr=johndoe
必须将

重写为:

http://www.website.com/index.php?a=p&p=thepagename&req=login

http://www.website.com/index.php?a=p&p=thepagename&req=login&user=johndoe

分别在不破坏原始重写的情况下(即没有将可选查询参数添加到unrewritten URL上)。

尽我所能,我无法弄清楚正确的语法。有人能指出我正确的方向吗?

TNX!

// FvW

1 个答案:

答案 0 :(得分:3)

您只需添加'QSA`标记(查询字符串追加

RewriteRule ^([_0-9a-zA-Z-]+)\.html$ index.php?a=p&p=$1 [L,QSA,NC]

更多信息(和示例)here