0

我正在使用下面的代码,当网站放置在 Web 根目录中时,它会发挥作用:

 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]

然而不幸的是,我一直在开发的站点是一个微型站点,它不会存在于 Web 根目录中。相反,它将存在于 /custom/test/ 之类的 URL 中——现在,当 URL 被重写时,这部分 URL 将被删除。

htaccess 文件需要位于此子文件夹中,以便站点的其余部分不受影响。

4

1 回答 1

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 文件中。

于 2013-09-18T07:44:18.697 回答