MODX - Перевести сайт на HTTPS

zhelanovgrey
3K
0
Добрый день. В сети есть заметки на эту тему, но не одна на мой взгляд не открывает истину, как это сделать. Поделитесь опытом, кто как это делал.

Комментарии ()

  1. Evgenij
    02 августа 2017, 08:34
    Александр, здравствуйте!
    Вопрос по этой теме есть.
    Данная группа действий идентична в случае если я перешел на https сразу, до индексации?
    И еще один небольшой вопрос. Где можно почитать про составление правильного robots.txt для modx revo 2.5.6 по Вашему мнению? К сожалению на данном сайте такой информации не нашел.
    1. Александр Мальцев
      02 августа 2017, 15:25
      Здравствуйте!
      Нет, конечно, многие действия выполнять не надо.
      Достаточно выполнить пункты 1 (проверить значение параметра server_protocol и если оно не соответствует https, то изменить его), 4 (канонические URL), 8 (добавить редирект на https), 9 (при необходимости) и 10. А также добавить сайт в инструменты Google для веб-мастеров и Яндекс Вебмастер.

      Файл robots.txt — это простой текстовый файл, который нужен на сайте только для того чтобы указать поисковым роботом что нужно сканировать, а что нет. Причём поисковый робот Яндекса напрямую следует директивам этого файла, а поисковый робот Google воспринимает его как рекомендацию. Т.е., например, страницы, к которым вы запретили доступ с помощью robots.txt всё равно могут быть проиндексированы Google.

      При составлении файла robots.txt не важно, используете вы MODX Revolution или нет. В большей степени содержимое этого файла зависит от структуры сайта. Другими словами вам нужно определиться, какие страницы вы хотите видеть в поиске, а какие нет. По умолчанию, если не указаны директивы Disallow, то всё разрешено для индексирования. В этом случае, поисковый робот будет сканировать как нужное, так и нет. Это может привести не только к лишней нагрузке на ваш сервер, но и к тому, что робот просто может не дойти до индексирования нужных страниц. Поэтому, используя директивы Disallow и Allow, вы должны запретить роботу индексирование страниц, которых не должно быть в поиске (служебных, содержащих дублирующий контент и т.п.). А оставить только основные страницы с доступом к файлам CSS, картинки и другой необходимый контент.
      Например:
      User-agent: *
      # for modx revolution (default)
      Disallow: /assets/components
      Disallow: /connectors
      Disallow: /manager
      Кроме этого в файле robots.txt ещё указывается расположение sitemap и host (для Яндекса):
      Host: https://mydomain.ru
      Sitemap: https://mydomain.ru/sitemap.xml
      Кроме этого Яндекс рекомендует ещё использовать директиву Clean-param для указания параметров URL не влияющих на контент. Зная про них, Яндекс будет не только более эффективно индексировать сайт, но и оказывать на него более низкую нагрузку.

      Пример файла robots.txt для MODX Revolution:
      User-agent: *
      Disallow: /assets/components
      Disallow: /connectors
      Disallow: /manager
      Host: https://mydomain.ru
      Sitemap: https://mydomain.ru/sitemap.xml
      После этого добавляйте в него другие ресурсы, которые тоже не надо индексировать и представлять их в поиске.
      Например, запретим для индексирования ещё страницы «404» и «О сайте»:
      User-agent: *
      Disallow: /assets/components
      Disallow: /connectors
      Disallow: /manager
      Disallow: /404.html
      Disallow: /about.html
      Host: https://mydomain.ru
      Sitemap: https://mydomain.ru/sitemap.xml
      1. Evgenij
        02 августа 2017, 15:56
        Да и правда же, забыл про 404 ошибку, напомнили. Ее занес, и еще страницу поиска по сайту. Спасибо. Ну а Clean-param не буду указывать, он больше нужен, как я понял, для динамического контента, а у меня его в принципе то нет.
        Где то читал еще, чтоб избавиться от дублей страниц сразу, указывают правило
        Disallow: *?
        Такое поставил.
        Ну а за развернутый и понятный ответ, как всегда, СПАСИБО! )
        1. Александр Мальцев
          03 августа 2017, 17:50
          Отлично.
          Но параметр Clean-param это немного другое. Он нужен только для того, чтобы поисковый робот Яндекса не проходил страницы, если они отличаются только указанными параметрами.
          Например, у вас на сайте есть страница mypage. Если ей передать параметр tab, то это просто приведёт к открытию одной, другой или третьей вкладки. При этом сам контент страницы останется таким же.
          https://mydoamin.ru/mypage
          https://mydoamin.ru/mypage?tab=2
          https://mydoamin.ru/mypage?tab=3
          Указав директиву Clean-param, вы тем самым скажите роботу, что этот параметр не влияет на контент.
          Clean-param: tab /mypage
          Не надо проходить все эти страницы. И вместо 3 страниц поисковый робот пройдёт только одну.
          1. Evgenij
            03 августа 2017, 18:10
            Здравствуйте!
            Дак у меня все страницы разные по адресам, схожих, но отличающихся каким либо одним-двумя параметрами, нет. Потому все по простому.

            p.s. Александр, вы на тему роботс.т-икс-т наотвечали на целую статью )). Да и в принципе можно про индексацию сайта чтонить сообразить.
    2. Александр Мальцев
      19 июля 2017, 07:51
      Действия для перевода сайта, работающего по управлением CMS MODX Revolution с http на https:

      1. Установить в настройках системы MODX в качестве значения параметра server_protocol значение https.
      2. Закомментировать в .htaccess эти правила:
      # Rewrite www.domain.com -> domain.com -- used with SEO Strict URLs plugin
      #RewriteCond %{HTTP_HOST} .
      #RewriteCond %{HTTP_HOST} ^www.(.*)$ [NC]
      #RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
      #
      # or for the opposite domain.com -> www.domain.com use the following
      # DO NOT USE BOTH
      #
      #RewriteCond %{HTTP_HOST} !^$
      #RewriteCond %{HTTP_HOST} !^www\. [NC]
      #RewriteCond %{HTTP_HOST} (.+)$
      #RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] .
      3. Настроить сайт так, чтобы он некоторое время был доступен как по протоколу http, так и по https.
      Для этого необходимо создать сниппет siteUrl (зависит от хостинга):
      <?php
      if ($_SERVER['HTTP_X_FORWARDED_PROTO']=='http') {
        return 'http://mydomain.ru/';
      } else {
        return 'https:// mydomain.ru/';
      }
      Установить данный сниппет в качестве значения атрибута href элемента base:
      <base href="[[!siteUrl]]">
      Используя этот шаг можно проверить, корректно ли у вас отображается сайт по протоколу https. Если вы используете абсолютные ссылки с использованием протокола, то их необходимо исправить на относительные.
      4. Настроить канонические URL, ведущие на https версию сайта.
      5. Добавить в robots.txt основное зеркало (для Яндекса):
      Host: https://mydomain.ru
      6. Добавить в инструментах Google для веб-мастеров сайт с протоколом https. После этого у вас в Search Console будут доступны 2 сайта (с протоколом http и https). Google, при наличии сайта в двух версиях, будет показывать в выдаче именно его https-версию. Для более быстрого индексирования предоставить файл sitemap.xml.
      7. В Яндекс Вебмастер на странице Переезд сайта (Индексирование->Переезд сайта) установить галочку «Добавить https» и нажать на кнопку «Сохранить». И ждём, пока Яндекс склеит зеркала. Этот момент может длиться от нескольких недель до нескольких месяцев.
      При этом Яндекс не рекомендует использовать редирект. Иначе страницы могут выпасть из выдачи. Т.е. пока Яндекс не склеит зеркала, у вас сайт должен быть доступен как по http, так и по https. Источник: yandex.ru/support/webmaster-troubleshooting/mirrors/change-protocol.xml
      8. После склейки Яндексом добавить редирект в .htaccess (данные строчки зависят от хостинга):
      RewriteCond %{HTTP:HTTPS} !=on [NC]
      RewriteCond %{REQUEST_URI} !robots.txt
      RewriteRule ^(.*)$ https://mydomain.ru/$1 [R=301,L]
      SetEnvIf X-Forwarded-Proto https HTTPS=on
      9. В настройки контекста web (при необходимости) добавить параметр site_url со значением:
      https://mydomain.ru/
      10. Установить данный параметр в качестве значения атрибута href элемента base:
      <base href="[[++site_url]]">
      1. zhelanovgrey
        18 июля 2017, 15:33
        Прощу прощения за столь широкий вопрос. Сайт на CMS MODX Revo
        1. Александр Мальцев
          18 июля 2017, 14:25
          Здесь необходимо пояснить, использует ли сайт CMS. И если использует, то какую?
          Войдите, пожайлуста, в аккаунт, чтобы оставить комментарий.