удаление завершающей косой черты и без www до www - с помощью .htaccess

У меня возникла проблема с .htacess при одновременном объединении 2 mod_rewrite:

  • удалить косую черту в конце
  • перенаправить без www на www

Вот мой файл .htaccess

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.domain\.com$ [NC]
RewriteRule ^(.+)/$ http://www.domain.com/$1 [R=301,L]

# Remove trailing slash
RewriteCond %{HTTP_HOST} ^domain.com
RewriteRule (.*) http://www.domain.com/$1 [R=301,L]

Они отлично работали, когда я только что использовал один из них, но когда я собрал их вместе, страница просто продолжала загружаться, как никогда.

Пожалуйста, помогите мне найти способ, который может использовать их оба в одном и том же .htaccess.


person HoanNguyen    schedule 01.12.2012    source источник


Ответы (2)


Попробуй это:

RewriteEngine on
Options +FollowSymLinks
RewriteBase /
#Non www to www without trailing slash
RewriteCond %{HTTP_HOST} ^(domain\.com)/?$ [NC]
RewriteRule ^(.*/?[^/]+)/?$ http://www.domain.com/$1 [R=301,L,OR]
RewriteRule  .* http://www.domain.com [R=301,L]

Результаты:

http://domain.com/aa/ to http://ww.domain.com/aa

с http://domain.com/aa/bb/ по http://ww.domain.com/aa/bb и т. д.

Все, кроме http://domain.com/, которое всегда будет http://www.domain.com/с косой чертой в конце

person Felipe Alameda A    schedule 01.12.2012
comment
Почему не работает? Если вы напишете http://domain.com, вы перейдете к http://www.domain.com. Если вы напишете http://domain.com/, это приведет вас к http://www.domain.com Насколько я понимаю, это именно то, о чем вы спрашиваете. Вот оно: убрать косую черту в конце, перенаправить без www на www - person Felipe Alameda A; 02.12.2012
comment
он не работает в случае: www.domain.com/abc/ (abc может быть папкой или просто измененным URL-адресом), он не удаляет косую черту. Есть ли шанс удалить этот вид косой черты? - person HoanNguyen; 13.12.2012
comment
Обновлен мой ответ, должен работать с любым путем. Если это не так, пожалуйста, дайте мне знать, чтобы проверить это. - person Felipe Alameda A; 13.12.2012

URL-адреса, не относящиеся к WWW, ИСПОЛЬЗУЮЩИЕ HTACCESS:

Вы можете добавить следующий код в свой файл .htaccess, вы можете найти его в корневом каталоге вашего веб-сайта, если вы его не найдете, вы можете скопировать его в текстовом редакторе и сохранить как .htaccess, а затем загрузить.

p.s.: Убедитесь, что вы сделали резервную копию файла .HTACCESS, прежде чем продолжить. Неверные коды могут привести к 500 ошибкам.



    RewriteEngine On
            RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
            RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]


Удалить косую черту в конце

Будьте осторожны при отключении завершающей косой черты. Если на вашем хосте включен mod_dir, убедитесь, что вы отключили косую черту каталога, которая включена по умолчанию. Эта директива добавит косую черту в конце каталога независимо от установленных вами правил. Чтобы отключить это, добавьте это в начало файла htaccess:


DirectorySlash Off

Ваш браузер и даже ваш сервер по умолчанию добавляют косую черту к каталогу. Это делается не просто так. Если вы должны удалить косую черту в конце, вот как вы это сделаете:



    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)$
    RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]


person Ipsita    schedule 25.08.2014