2

我正在使用 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 后停止读取。有没有办法使这项工作?

4

2 回答 2

11

您需要添加QSA标志:

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

原因在文档中得到了最好的解释:

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

于 2012-06-27T20:18:20.410 回答
0

你必须打电话home.htm&a=f1

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

于 2012-06-27T20:16:57.507 回答