到目前为止,我还没有看到一个有效的/foo/bar到/foo/bar.php的重写器,所以我创建了自己的重写器。它在顶级目录和子目录中都能工作,并且不需要硬编码RewriteBase。
.htaccess
RewriteEngine on
# 将/foo/bar重写为/foo/bar.php
RewriteRule ^([^.?]+)$ %{REQUEST_URI}.php [L]
# 如果原始请求是/foo/bar.php,则返回404
RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$"
RewriteRule .* - [L,R=404]
# 注意!对于Windows上的Apache:向RewriteCond添加[NC],如下所示
# RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$" [NC]