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

Ric*_*ick 2 php apache .htaccess mod-rewrite url-rewriting

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

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

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

但是,如果它重写它home.html?a=f1,没有.

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

Sal*_*n A 11

你需要添加QSA标志:

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

原因最好在文档中解释:

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