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

Zak*_*Zak 10 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]
Run Code Online (Sandbox Code Playgroud)

该代码工作得很好.

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

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

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

ehu*_*kai 17

将QSA添加到您的参数中.所以对于你的第一条规则它会成为

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


Har*_*lby 8

您需要使用QSA(查询字符串追加)标志.该mod_rewrite的文档有更多详细信息.