到目前为止,我还没有看到一个能将 /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,请像这样将 [NC] 添加到 RewriteCond
# RewriteCond %{THE_REQUEST} "^[^ ]* .*?\.php[? ].*$" [NC]