Заезженная до дыр тема, тем не менее, не потерявшая своей актуальности до сих пор.

Правильное решение:

  1. Перенаправление с www.domain.com на domain.com:
    [-]
    View Code Apache configuration
    RewriteCond %{HTTP_HOST}  ^www.(.+)$   [NC]
    RewriteRule ^(.*)         http://%1/$1 [L,R=301]
    Всё просто: если имя хоста начинается на www., отрезаем www. и выполняем редирект. Я предпочитаю перенаправление с кодом 301, у Вас могут быть свои предпочтения.
  2. Перенаправление с domain.com на www.domain.com:
    [-]
    View Code Apache configuration
    RewriteCond %{HTTP_HOST}   !^$
    RewriteCond %{HTTP_HOST}   !^www\.          [NC]
    RewriteCond %{HTTP_HOST}   (.+)$
    RewriteRule ^(.*)          http://www.%1/$1 [L,R=301]
    Посложнее: проверяем, что имя хоста не пустое и не начинается на www.. Добавляем www. к имени хоста и выполняем редирект.

Разумеется, что mod_rewrite должен быть включен (RewriteEngine On). В целях повышения производительности имеет смысл помещать код не в .htaccess, а непосредственно внутрь директивы <VirtualHost> конфигурационного файла Apache.

Здесь раасмотрен простой случай: протокол HTTPS не используется. Реализация перенаправления с использованием HTTPS остаётся домашним заданием читателю :-)

Добавить в закладки
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • БобрДобр
  • Мистер Вонг
  • Yandex.Закладки
  • Текст 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Писали
  • СМИ 2
  • Моё Место
  • 100 Закладок
  • Ваау!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - IN.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA
  • Slashdot
  • Magnolia
  • Blogmarks
  • Current
  • Meneame
  • Oknotizie
  • Diigo
  • Funp
  • Hugg
  • Dealspl.us
  • N4G
  • Mister Wong
  • Faves
  • Yigg
  • Fresqui
  • Care2
  • Kirtsy
  • Sphinn
  • SaveThis.ru

Связанные записи

21
Окт
2008

Комментарии к статье «Apache: устанавливаем редирект с www.domain.com на domain.com и наоборот» (9)  »

  1. Yohan says:

    Спасибо!

    Только что себе настроил редирект, по первому варианту - все работает!

  2. Vladimir says:

    Да просто поправлял сайт заказчику… Он умудрился так настроить редирект, что Apache просто выдавал 500 Server Error. А последней каплей была статья, описывавшая, как сделать подобный редирект (естественно, примеры были нерабочими). Поэтому я решил найти решение, которое будет работать независимо от имени домена (а также в тех случаях, когда сайт “отзывается” на несколько имен).

  3. evs says:

    спасибо, отличный кодик. подскажи еще код редиректа с одного домена на другой. например: при заходе на site.com перекидывает на site2.com. буду благодарен тебе.

    • Vladimir says:

      Так должно работать:

      [-]
      View Code Apache configuration
      RewriteRule ^(.*)$ http://site2.com/$1 [L,R,QSA]
  4. PaLyCH says:

    Это все хорошо. Но при некоторых настройках сервака, эти функции не пашут. Например при FastCGI

    • Vladimir says:

      Да ну? А ничего, что переписывание URL’ов происходит до работы всяких там FastCGI?

  5. codc says:

    подскажи плиз, на виртуальном хосте прописываю указанные выше правила редиректа, а при попытке зайти на страницу у меня в конце адреса прибавляется дополнительный слэш, как с этим бороться, уже практически все перепробывал.
    И еще, обязательно ли указывать ServerAlias в директиве в виде www.domain.com domain.com

    • Vladimir says:

      Возможно, что слэш добавляет софт, который Вы используете. Нужно смотреть на сайт, с ходу я вряд ли что скажу.

      ServerAlias — в общем случае, да.

  6. codc says:

    Поковырял правило, сделал правило таким образом http://%1$1 [L,R=301] все заработало, с www на без www редирект проходит нормально. Все равно спасибо.

Подписаться на RSS-ленту комментариев к статье «Apache: устанавливаем редирект с www.domain.com на domain.com и наоборот» Trackback URL: http://blog.sjinks.org.ua/administring/352-apache-how-toredirect-from-www-and-back/trackback/

Оставить комментарий к записи «Apache: устанавливаем редирект с www.domain.com на domain.com и наоборот»

Вы можете использовать данные тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Оставляя комментарий, Вы выражаете своё согласие с Правилами комментирования.

Подписаться, не комментируя