我使用这个代码段来启用干净的URL,有效地删除PHP扩展。
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
## hide .php extension snippet
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L]
# To internally forward /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*?)/?$ $1.php [L]
这很好,但问题是我有一些目录与一些PHP文件共享相同的名称。
因此,我得到的不是所需的页面,而是目录结构。
我尝试添加
DirectorySlash Off
在所有重写规则之前,但没有运气。
我读到我必须删除
RewriteCond %{REQUEST_FILENAME} !-d
如果我正在使用
目录删除
,这也不起作用。
更不用说,在寻找解决方案时,我尝试了十几个不同的代码片段。
处理我的情况的正确方法是什么?