我正在使用 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 后停止读取。有没有办法使这项工作?
我正在使用 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 后停止读取。有没有办法使这项工作?
您需要添加QSA
标志:
RewriteRule ^([0-9a-zA-Z-_]+)\.html$ index.php?p=$1 [QSA,L]
原因在文档中得到了最好的解释:
当替换 URI 包含查询字符串时,RewriteRule 的默认行为是丢弃现有的查询字符串,并将其替换为新生成的查询字符串。使用 [QSA] 标志会合并查询字符串。
你必须打电话home.htm&a=f1
隐藏的网址是:index.php?p=home&a=f1