我有一个托管在 Apache Web 服务器上的网站,并且我有一些与某些目录同名(不带扩展名)的文件。
我还在 .htaccess 文件中删除了扩展名:
#Remove .php from filenames
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
例如,我有一个名为 test.php 的文件和一个名为 test 的目录。当我访问 http://redxtech.ca/test 时,它会在 URL 中添加斜杠并转到目录 test/ 的内容。
我知道只需在文件名末尾输入 .php 就可以解决我的问题,但我希望不存在 .php (或任何扩展名),而只是不带扩展名的文件名转到文件,然后用斜杠转到目录。
有什么办法可以做到这一点吗?
经过一番搜寻这个网站后,我找到了答案。
# Manually re-route test/ requests to test
DirectorySlash Off
RewriteCond %{REQUEST_FILENAME} test/$
RewriteRule ^(.*)/$ $1
# Hide extension
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
唯一的事情是我必须为每个我希望具有此条件的目录单独执行此操作。
在这里找到答案。
你可以这样做:
DirectorySlash Off
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]