Как настроить редирект на www-версию домена и обратно

Webasyst умеет автоматически перенаправлять посетителей сайта с www-версии домена на основной домен (www.domain.ru → domain.ru) и обратно (domain.ru → www.domain.ru).

Вам достаточно выбрать, какой из двух вариантов домена вы считаете основным: www-версию или основной домен без www. Введите выбранный вариант домена в настройках сайта в бекенде приложения «Сайт» и сохраните настройки.

Готово! Никакие дополнительные настройки больше не требуются. При попытке открыть ваш сайт на том варианте домена, который не указан в настройках сайта, посетитель сайта будет автоматически перенаправлен на тот вариант, который является основным, т. к. указан в настройках сайта.

23 комментария

  • +1
    Юрий Ким Юрий Ким 23 января 2017 09:02 #

    Здравствуйте!

    У меня изначально был прописан вариант с WWW.

    Если сейчас убираю WWW и оставляю просто site.ru, браузер выдает ошибку:

    "Неверное перенаправление на странице

    Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится."

    Помогите решить проблему, нужен вариант без WWW

    Спасибо.


  • +1
    Юрий Ким Юрий Ким 23 января 2017 10:09 #

    Вот содержание файла:

    <FilesMatch "\.md5$">
    Deny from all
    </FilesMatch>

    DirectoryIndex index.php
    Options -Indexes
    # Comment the following line, if option Multiviews not allowed here
    Options -MultiViews

    AddDefaultCharset utf-8

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    <ifModule mod_rewrite.c>
    RewriteEngine On
    # Uncomment the following line, if you are having trouble
    #RewriteBase /

    RewriteCond %{REQUEST_URI} !\.(js|css|jpg|jpeg|gif|png)$ [or]
    RewriteCond %{REQUEST_URI} apple-touch-icon\.png$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [L,QSA]
    </ifModule>

    <ifModule mod_headers.c>
    <FilesMatch "\.(jpg|jpeg|png|gif|js|css)$">
    Header set Cache-Control "max-age=3153600, public"
    </FilesMatch>
    </ifModule>

    Редирект на site.ru дает бесконечную переадресацию, если прописать...

    Так понимаю проблема не в .htaccess

    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 23 января 2017 10:22 #

      Поясните вот эту фразу, пожалуйста:

      Редирект на site.ru дает бесконечную переадресацию, если прописать...

      Что и где вы пытаетесь прописать.

    • +1
      Юрий Ким Юрий Ким 23 января 2017 10:38 #

      При добавлении RewriteCond %{HTTP_HOST} ^www\. браузер выдает: Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 23 января 2017 10:44 #

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

      • +1
        Юрий Ким Юрий Ким 23 января 2017 10:53 #

        Я про то и пишу, что когда убираю www, то сайт перестает работать.

        Ответ тот же: Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.

        • +1
          Михаил Ушенин Михаил Ушенин Webasyst 23 января 2017 12:21 #

          Убрать www. достаточно только из адреса сайта в настройках приложения "Сайт". В .htaccess перенаправление настраивать не нужно.

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

        • +1
          Murmak Murmak 22 февраля 2017 05:01 #

          Здравствуйте! В настройках сайта стоит домен без www.

          Но для не зарегистрированных пользователей почему то редирект делает на www.

          Почему так?

          • +1
            Михаил Ушенин Михаил Ушенин Webasyst 22 февраля 2017 11:35 #

            Возможно, такое поведение вызвано логикой работы вашей темы дизайна или плагинов. Попробуйте использовать оригинальную стандартную тему дизайна "Дефолт" и отключить все плагины для проверки. Проверку лучше выполнять в режиме браузера "инкогнито" (приватное окно), потому что браузер может кешировать адреса предыдущих редиректов.

          • +1

            А кто знает можно прописать чтобы сервер перекидывал пользователя который пришел через приглашение в котором указано ( или скажите где подправить, что бы ссылка правильная на email приходила)

            http://сайт.ru/link.php/здесь токен/

            А на самом деле мне нужно, что бы они попали в

            http://сайт.ru/index.php/link.php/здесь номер token/

            • +1

              Вообщем, вышел из положения, за одно установил ssl сертификат, и в apache.conf добавил строчку

               Redirect / https://мой_сайт.ru/index.php/

              вроде так работает, только ссылки в поисковиках не которые побились, по ссылкам http они кадают https://сайт/index.php/index.php пока тестирую, a .htaccess так и не работает :(

              • +1

                Убил битые ссылки, для index.php включил режим черновик, а содержимое перенес в новую созданную страницу (без названия, т.е. оставив название пустым), а остальные автоматом в новые перекидывает в https://сайт/index.php/onas.php

                • +1

                  Извините не помогло , стали приходить уже битые https, сам текст приглашения в команду, находится

                  в wa-apps\team\templates\messages\welcome_invite.ru_Ru.html

                  зато помогло в файле wa-system\webasyst\lib\models\waAppTokens.model.php

                  строка 44 , перед link.php вставить index.php

                  return wa()->getRootUrl(true).'index.php/link.php/'.$token.'/';
                • +1
                  Сергей Сергей 3 июля 2017 12:54 #

                  Эта инструкция устарела и не работает для магазинов с SSL сертификатом и работающих на HTTPS.

                  У меня магазин работал по HTTP без www. Согласно данной инструкции, всё выполнено правильно. Работало и с www редиректило на без www. Потом я получил сертификат и перевел домен на работу по HTTPS. Для этого прописав в .htaccess:

                  RewriteEngine On
                  RewriteCond %{HTTPS} off
                  RewriteCond %{HTTP:X-Forwarded-Proto} !https
                  RewriteCond %{REQUEST_URI} !robots.txt
                  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301

                  Так как мне было необходимо чтобы сайт редиректился с HTTP на HTTPS. В этом плане всё замечательно работает. Но перестал работать редирект с www. Если набрать в браузере: https://www.site.ru выдает ошибку:

                  Сайт www.site.ru выполнил переадресацию слишком много раз

                  Если набрать в браузере: http://www.site.ru то редиректит на https://www.site.ru с той же ошибкой.

                  Прописывание дополнительного редиректа с www на без www в .htaccess формата:

                  RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]

                  Никаких результатов не дало. Вопрос: как сделать в таком случае редирект с www на без www?

                  • +1

                    Проверьте работу редиректа, убрав ваши правила из файла .htaccess. Если всё будет работать правильно, значит, проблема в ваших правилах, и вам нужно их исправить.

                    • +1
                      Сергей Сергей 3 июля 2017 16:52 #

                      Михаил. Убирал. Тогда магазин не редиректит на https. А без этого не пройти модерацию у Google. То есть домен должен работать только по https протоколу.

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

                    • +1
                      Михаил Пахомушкин Михаил Пахомушкин 21 сентября 2017 01:28 #

                      Вот мой рабочий конфиг .

                      первый конфиг файл

                      <VirtualHost *:80>

                      ServerName site.ru

                      DocumentRoot /var/www/

                      DirectoryIndex index.php

                      ServerAlias www.site.ru

                      RewriteEngine on

                      RewriteCond %{SERVER_NAME} =www.site.ru [OR]

                      RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

                      </VirtualHost>

                      второй

                      <IfModule mod_ssl.c>

                      <VirtualHost *:443>

                      ServerName (попробуй здесь с www и без)site.ru

                      DocumentRoot /var/www/

                      DirectoryIndex app.php

                      ServerAlias www.site.ru

                      ErrorLog ${APACHE_LOG_DIR}/error.log

                      CustomLog ${APACHE_LOG_DIR}/access.log combined

                      SSLCertificateFile /etc/letsencrypt/live/site.ru/fullchain.pem

                      SSLCertificateKeyFile /etc/letsencrypt/live/site.ru/privkey.pem

                      Include /etc/letsencrypt/options-ssl-apache.conf

                      </VirtualHost>

                      </IfModule>




                    • +1
                      Алексей Данилов Алексей Данилов 26 января 2018 13:03 #

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

                      Если заходить с www, то переадресация не работает.

                    • +1
                      Алексей Данилов Алексей Данилов 26 января 2018 13:12 #

                      Разобрался, спасибо, было два сайта, с ввв и без. С ввв удалил и все как надо!

                      Добавить комментарий

                      Чтобы добавить комментарий, зарегистрируйтесь или войдите