.htaccess htaccess删除尾部斜杠导致重定向循环

.htaccess htaccess删除尾部斜杠导致重定向循环,.htaccess,trailing-slash,.htaccess,Trailing Slash,我正在修改我的htaccess文件,以实现从www到www的非连接(这是可行的),并删除URL末尾的尾随斜杠,例如: www.domain.bc.ca/club/ ---> www.domain.bc.ca/club www.domain.bc.ca/club/index.html/ ---> www.domain.bc.ca/club/index.html htaccess文件的以下部分-强制www位正在工作;删除尾部斜杠位不正确。救命啊!非常感谢,阿曼达 # Force ww

我正在修改我的htaccess文件,以实现从www到www的非连接(这是可行的),并删除URL末尾的尾随斜杠,例如:

www.domain.bc.ca/club/ ---> www.domain.bc.ca/club
www.domain.bc.ca/club/index.html/  ---> www.domain.bc.ca/club/index.html
htaccess文件的以下部分-强制www位正在工作;删除尾部斜杠位不正确。救命啊!非常感谢,阿曼达

# Force www.
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^domain\.bc\.ca$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
#
# Remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.+)/$ /$1 [R=301,L]

我要冒险去猜测,当这种情况发生时,你正在试图访问一个目录。在您的示例中,“club”似乎是一个目录,当您将
/club/
重定向到
/club
时,一个名为mod_dir的模块会将其重定向回具有尾部斜杠的位置。这有一个很好的理由,因为如果目录缺少尾随斜杠,则目录的内容将显示,而不是索引文件。这意味着如果您能够转到
www.domain.com/club
(不带尾随斜杠),您将看到
club
目录的所有内容,而不是
club/index.html
文件

如果您同意,则可以通过将其添加到htaccess文件来关闭mod_dir:

DirectorySlash Off
但是您需要在内部添加斜杠:

DirectorySlash Off

# Force www.
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^domain\.bc\.ca$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
#
# Remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.+)/$ /$1 [R=301,L]

# Add the slash back
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ /$1/ [L]