你怎么让.htaccess传递所有的GET参数而不知道它们的名字是什么?

时间:2011-02-21 22:31:23

标签: php .htaccess

我正在使用涉及自定义用户页面的CMS。我有一个设置了三个级别的层次结构,它运行得很好。它有一个.htaccess,使URL更友好:

RewriteRule ^([A-Za-z0-9]+).html /content.php?page=$1 [L]
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+).html /content.php?page=$2 [L]
RewriteRule ^([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).html /content.php?page=$3 [L]

该代码工作正常。

我的另一个功能是添加自定义php页面,以防我需要添加更强大的功能(例如制作一个从数据库中获取电子邮件地址的联系表单)。

所以我的问题是如何修改(或添加).htaccess以使所有GET参数传递给PHP页面。例如,要使用联系页面示例,如果用户转到http://www.mysite.com/contact.html?name=someuser,我希望.htaccess将其重写为content.php?page = contact& name = someuser,但没有明确告诉它要查找'name'作为参数名称。我也希望它能够使用尽可能多的参数。

我知道这是一个很大的(并且希望不会混淆)请求,但它有可能吗?或至少部分内容?谢谢!

2 个答案:

答案 0 :(得分:17)

将QSA添加到您的参数中。因此,对于你的第一条规则,它将成为

RewriteRule ^([A-Za-z0-9]+).html /content.php?page=$1 [L, QSA]

答案 1 :(得分:8)

您需要使用QSA(查询字符串追加)标志。 mod_rewrite documentation有更详细的内容。