我正在尝试从Apache 1.3.42中的子目录文件夹中删除尾部斜杠但是当我尝试将规则添加到我的.htaccess文件时,我的Apache版本不支持命令DirectorySlash Off。 / p>
目前我的链接表现如下:
www.domain.com/folder指向www.domain.com/folder /
我想要的是:
www.domain.com/folder/指向www.domain.com/folder
我当前的.htaccess文件如下所示:
AddType application/x-httpd-php .html
RewriteEngine On
RewriteBase /
#non www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#removing trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]
#html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.html [NC,L]
#index redirect
#directory remove index.html
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://www.arkiq.com/ [R=301,L]
#directory remove index
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\ HTTP/
RewriteRule ^index http://www.arkiq.com/ [R=301,L]
#sub-directory remove index.html
RewriteCond %{THE_REQUEST} /index\.html
RewriteRule ^(.*)/index\.html$ /$1 [R=301,L]
#sub-directory remove index
RewriteCond %{THE_REQUEST} /index
RewriteRule ^(.*)/index /$1 [R=301,L]
#remove .html
RewriteCond %{THE_REQUEST} \.html
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
我确实意识到问题解决的可能性要大得多,但是我很感激你看到它。
答案 0 :(得分:3)
除了删除尾部斜杠之外,还需要添加其他几个规则。使用DirectorySlash Off
,从无斜杠到尾随斜杠的重定向停止,但如果您访问任何目录,它将打印目录的内容而不是显示索引文件。
这意味着您必须在内部向目录添加尾部斜杠。所以改变这些方面:
#removing trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1 [R=301,L]
要:
DirectorySlash Off
#removing trailing slash
RewriteCond %{THE_REQUEST_FILENAME} \ /(.*)/(\ |$|\?)
RewriteRule ^(.*)/$ $1 [R=301,L]
# internally add the slash back
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^(.*)$ /$1/ [L]