2014-02-21 3 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 WW работает; Убрать конечную косую черту - нет. Помогите! Большое спасибо, Аманда.

# 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.

Если это нормально с вами, то вы можете отключить mod_dir, добавив в файл Htaccess:

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]