2014-02-21 32 views
0

我修改我的htaccess的文件來實現非www到www(這工作)加在URL的末尾刪除尾部斜線,例如:htaccess的刪除斜線原因重定向循環

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] 

回答

0

我打算出去走一趟,猜測你在嘗試訪問一個目錄時發生這種情況。在你的例子中,「俱樂部」似乎是一個目錄,當你將/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]