我正在使用下面的代码,当网站放在网络根目录中时,它会起作用:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
然而不幸的是,我一直在研究的网站是一个不会存在于网络根目录中的微型网站。相反,它将存在于/ custom / test /等URL中,现在当URL被重写时,URL的这部分将被删除。
htaccess文件需要位于此子文件夹中,以便网站的其余部分不受影响。
答案 0 :(得分:0)
您需要添加重写基础并从重定向规则中删除前导斜杠(或者在那里添加基础):
RewriteEngine On
RewriteBase /custom/test/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.php
RewriteRule (.*)\.php$ $1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule .*[^/]$ $0/ [L,R=301]
这些规则需要位于/custom/test/
目录中的htaccess文件中。