SEO эффективные 301 редиректы (без https на https, без www на www) за 1 переход

Вопрос или проблема

Аудит моего сайта показал наличие нескольких 301 редиректов для достижения HTTPS,www. варианта, с завершающим слешем для всех директорий.

В идеале я хотел бы сделать только один 301 редирект с любых вариаций URL на https://www.example.com/page/

Многие из ответов, которые я нашел в интернете, имеют несколько переходов или не устраняют отсутствие завершающих слешей в директориях… и т.д.

В настоящее время я использую:

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

для перенаправления http-трафика в моей конфигурации vHost на HTTPS вариант. Однако:

  • HTTPS non-www URL все еще действительны
  • HTTPS URL без завершающего слеша все еще действительны

Возможно ли включить HTTPS non-www URL и URL без завершающего слеша в вышеизложенное, чтобы я мог сделать 301 на правильное направление за один переход?

Ответ или решение

Для успешного решения проблемы с 301 редиректами и достижения SEO эффективности, важно провести единый редирект, который обрабатывает все возможные варианты URL вашего сайта. Это позволит избежать излишних «прыжков» (hops) и гарантировать, что все запросы будут перенаправлены на ожидаемый конечный URL: https://www.example.com/page/. Давайте разберем, как это можно реализовать с помощью конфигурации .htaccess и модулей Apache.

Одноуровневый редирект

Чтобы осуществить 301 редирект с учетом всех ваших требований (HTTP на HTTPS, non-www на www и добавление слеша для директорий), вы можете использовать следующий код в файле .htaccess:

RewriteEngine On

# Перенаправляем с http на https
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Убедимся в наличии www для существующих https url
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Убедимся в наличии слеша на конце для директорий
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*[^/])$ https://www.example.com/$1/ [L,R=301]

# Перенаправление всех оставшихся не-www и без слеша
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^ https://www.example.com/$0/ [L,R=301]

Пояснение к коду

  1. Перенаправление с HTTP на HTTPS: Первая часть кода проверяет, использует ли запрос протокол HTTP. Если да, то он перенаправляется на тот же URL, использующий HTTPS.

  2. Переход на www для HTTPS: Следующий блок кода обрабатывает случаи, когда URL уже использует HTTPS, но не содержит префикса www.

  3. Добавление слеша для директорий: Третья часть проверяет, является ли запрашиваемый ресурс директорией, и добавляет слеш в конце, если это необходимо.

  4. Обработка остальных случаев: Заключительная часть кода служит для общих перенаправлений: если URL не содержит www или слеш, то выполняется перенаправление на корректную версию URL с www и слешом.

Проблемы и советы

  • Тестирование редиректов: Перед развертыванием новых правил, обязательно протестируйте их на локальном сервере или в тестовой среде. Используйте инструменты вроде Redirect Checker для проверки правильности работы редиректов.

  • Обновление ссылок: Проверьте внутренние и внешние ссылки на вашем сайте, чтобы убедиться, что они указывают на правильные версии URL. Это особенно актуально для ссылок на страницы с содержимым и на файлы.

  • Мониторинг в Google Search Console: После внесения изменений, следите за отчетами в Google Search Console, чтобы убедиться, что никакие ошибки не возникают и все ваши старые URL правильно индексируются.

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

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

Капча загружается...