0

我正在修改我的 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 文件的部分如下 - Force 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]
4

1 回答 1

0

当这种情况发生时,我会冒昧地猜测您正在尝试访问目录。在您的示例中,“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]
于 2014-02-22T01:04:57.840 回答