当mod_rewrite将.html重写为.php时,$ _GET变量消失

时间:2012-06-27 20:15:20

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

我正在使用mod_rewrite将.html重写为.php。

RewriteRule ^([0-9a-zA-Z-_]+)\.html$ index.php?p=$1 [L]

但是,我在URL中使用$ _GET时遇到问题。如果请求的URL采用以下格式,则可以正常工作:index.php?a=f1

但是,如果它将其重写为home.html?a=f1,则没有。

假设只是浏览器在点击.html后停止阅读。有没有办法使这项工作?

2 个答案:

答案 0 :(得分:11)

您需要添加QSA标志:

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

原因最好在文档中解释:

  

当替换URI包含查询字符串时,默认行为   RewriteRule是丢弃现有的查询字符串,并替换它   与新生成的一个。使用[QSA]标志会导致查询   要组合的字符串。

答案 1 :(得分:0)

你必须致电home.htm&a=f1

隐藏的网址是:index.php?p=home&a=f1