除了上面的其他答案,
您也可以尝试从文件中完全删除.php扩展名,并避免无限循环:RewriteEngine OnRewriteBase /RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]RewriteRule ^ %1
[R=301,L]RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^(.*?)/?$ $1.php [NC,L]
此代码将在Root / .htaccess中运行,如果要将其放在子目录中的htaccess文件中,请务必更改RewriteBase。
编辑:
在apache 2.4及更高版本中,您还可以使用END标志来防止无限循环错误。以下示例与apache 2.4上的相同,RewriteEngine onRewriteRule ^(.+)\.php$ /$1 [R,L]RewriteCond %{REQUEST_FILENAME}.php -fRewriteRule ^(.*?)/?$ /$1.php [NC,END]