Как правильно перенаправить сайт с http на https без потери индексации Google - PullRequest
0 голосов
/ 23 сентября 2018

Я недавно добавил поддержку SSL для старого сайта Rails 2.3.1.У меня есть следующий код для перенаправления с http на https:

Контроллер приложений:

  before_filter :need_ssl

protected 


  def need_ssl
    if RAILS_ENV=="production"
      redirect_to "https://#{request.host}#{request.request_uri}" unless request.ssl? 
    end
  end

Однако я получил сообщение от Google:

Approximately 80% of your HTTP pages that were indexed before migration can no longer be found in either your HTTP or HTTPS site

Я посмотрел иобнаружил, что 572 были исключены из индексации из-за перенаправления.

Как я могу затем добавить правильный код для перенаправления, чтобы я не потерял индексацию?

Ответы [ 3 ]

0 голосов
/ 30 сентября 2018

Rails 3 по умолчанию - 302 редирект (временный).Вы можете попробовать изменить его на 301 (постоянный) редирект и посмотреть, нравится ли Google это лучше:

redirect_to("https://#{request.host}#{request.request_uri}", :status => 301) unless request.ssl? 

или эквивалентно:

redirect_to("https://#{request.host}#{request.request_uri}", :status => :moved_permanently) unless request.ssl? 

оба фрагмента кода выполняют одно и то же

0 голосов
/ 03 октября 2018

Правила Google

В Google есть конкретные рекомендации по перемещению сайта для начала использования SSL

Использование перенаправлений 301 на стороне сервера

Перенаправьте пользователей и поисковые системы на страницу или ресурс HTTPS с помощью перенаправления HTTP на сервере 301.

...

Миграция с HTTP на HTTPS

Если вы переносите свой сайт с HTTP на HTTPS, Google воспринимает это просто как перемещение сайта с изменениями URL.Это может временно повлиять на некоторые из ваших номеров трафика.

https://support.google.com/webmasters/answer/6073543

Это считается как перемещение сайта с изменением URL

Перемещение сайта с изменениями URL

URL-адреса страниц изменяются.

Например: протокол изменяется с http://www.example.com на https://www.example.com

...

Ожидайте временные колебания рейтинга сайта во время перемещения.

При любых значительных изменениях сайта вы можете столкнуться с колебаниями рейтинга, когда Google повторно сканирует и переиндексирует ваш сайт.Как правило, веб-сайт среднего размера может занять несколько недель для перемещения большинства страниц в нашем индексе;большие сайты могут занять больше времени.Скорость, с которой робот Googlebot и наши системы обнаруживают и обрабатывают перемещенные URL-адреса, во многом зависит от количества URL-адресов и скорости вашего сервера.Отправка карты сайта может помочь ускорить процесс обнаружения, и можно перемещать сайт по разделам.

https://support.google.com/webmasters/answer/34437

Перенаправление в Ruby

Итак,В вашем случае вы хотите убедиться, что вы используете 301 перенаправления.По умолчанию redirect_to использует 302 в Ruby.

v2.3: https://api.rubyonrails.org/v2.3/classes/ActionController/Base.html#M001811

v5.2.1: https://api.rubyonrails.org/v5.2.1/classes/ActionController/Redirecting.html#method-i-redirect_to

Перенаправление происходит как заголовок 302 Found, если иное не указано с помощью: statusопция:

Обновлен код для Rails 2.3

redirect_to("https://#{request.host}#{request.request_uri}", :status => 301) unless request.ssl? 

Альтернативный код для Rails 3.1 +

Использование force_ssl , как указано в https://edgeguides.rubyonrails.org/configuring.html

config.force_ssl принудительно обслуживает все запросы через HTTPS с помощью промежуточного программного обеспечения ActionDispatch :: SSL и устанавливаетconfig.action_mailer.default_url_options, чтобы быть {протокол: 'https'}.

config.force_ssl = true

Проблемы с индексацией

Но у вас могут возникнуть временные проблемы с индексацией.Чтобы помочь Google быстрее находить новые HTTPS-страницы, вы должны создать карту сайта с новыми HTTPS-страницами и добавить ее в консоль поиска Google https://search.google.com/search-console/about.

Подробнее о форматах карты сайта, которые Google использует в Google, см. https://support.google.com/webmasters/answer/183668принимает.

0 голосов
/ 26 сентября 2018

Это то, что я обычно делаю, чтобы перенести мой сайт на https.

Перенаправить весь трафик http на https с 301 redirect в моей nginx конфигурации

server {
    listen       80;
    server_name  myawesomewebsite.com;
    return 301   https://myawesomewebsite.com$request_uri;
}

Включить force_ssl в config/application.rb

config.force_ssl = true

Редактировать: Спасибо всем за голосование за мой ответ.Но, пожалуйста, также проверьте ответ @agilejoshua, поскольку он поместил много полезной информации.

...