htaccess漂亮的URL重写子文件夹中的break

时间:2013-09-18 07:08:09

标签: apache .htaccess mod-rewrite

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

 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文件需要位于此子文件夹中,以便网站的其余部分不受影响。

1 个答案:

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