修改此重写以忽略查询字符串中的.php扩展名?

时间:2012-12-09 16:29:58

标签: .htaccess mod-rewrite url-rewriting

此重写规则适用于删除.php扩展名,但在查询字符串中传递文件名的情况下,它也会尝试删除扩展名。如何让它忽略查询字符串?

RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

1 个答案:

答案 0 :(得分:1)

您需要使重写条件中的(.*)匹配更严格。现在,它匹配URI 查询字符串。尝试:

RewriteCond %{THE_REQUEST} ^GET\ ([^\?]+)\.php
RewriteRule (.*)\.php$ $1 [R=301]

[^\?]+将匹配任何非?的内容。删除\ HTTP可确保查询字符串可以跟随.php