使用.htaccess删除.php扩展名而不破坏DirectoryIndex

ajc*_*jcw 10 .htaccess url-rewriting

我在我的.htaccess中重写它从文件中删除php扩展,转换例如so.com/question.phpso.com/question.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

但是这也打破了默认的DirectoryIndex行为,只需键入目录就会重定向到文件夹中的索引文件,例如so.com/answer显示so.com/answer/index.php

简单地将上述代码组合起来DirectoryIndex index.php并不能实现两种结果.

有人可以帮我组合这两个函数,或者重写代码来排除index.php文件,这会得到相同的结果吗?

Tim*_*eau 25

我想你只需要在重写之前验证文件是否存在,这样你就可以保持404和directoryindex行为的完整性:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
Run Code Online (Sandbox Code Playgroud)

(未测试)