Самые полезные редиректы WordPress

Статьи 14.07.2022 (обновлено)

В этом материале я собираю самые полезные перенаправления или редиректы WordPress с помощью htaccess или других серверных возможностей.

Редиректы WordPress
Редиректы WordPress

Перенаправление www на без-www через htaccess

Рассмотрим как перенаправить www.example.com на example.com через htaccess.

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

Есть один стандартный способ:

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]
RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

Но здесь мы жестко в htaccess прописываем доменное имя. Но есть ли способ сделать это универсальным способом без жесткого кодирования доменного имени?

Еще один метод без домена:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Но если нам нужно сделать это для разделения http и https, то есть такой вариант:

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Если вы хотите сделать это в файле httpd.conf, вы можете сделать это без mod_rewrite, и, очевидно, это лучше для производительности):

<VirtualHost *>
  ServerName www.example.com
  Redirect 301 / http://example.com/
</VirtualHost>

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

Редирект 403 ошибки на 404

Код состояния HTTP 403 (запрещен) указывает, что путь является правильным, но у вас нет разрешения на доступ к файлу или папке.

403 ошибка

Простыми словами — этот тип ошибки говорит нам, что файл/папка существует и доступ к ней ограничен.

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

Рекомендуется перенаправить код возврата 403 на 404 (не найден), чтобы не было возможности оценить структуру сайта.

Есть несколько способов сделать это, и мы сделаем редирект в Apache HTTP и Nginx.

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

Apache HTTP

Мы будем использовать директиву ErrorDocument для создания документа:

1. Создадим файл на уровне DocumentRoot, который будет обслуживаться по протоколу 404.

2. Назовём файл 404

3. Добавьте в файл httpd.conf следующее:

ErrorDocument 403 /404

Выше я инструктирую Apache использовать файл /404 всякий раз, когда произошла 403 ошибка.

Сохраните конфигурационный файл и перезапустите Apache для проверки.

Nginx

В случае Nginx мы будем использовать директиву error_page.

1. Создайте файл с именем 404.html.

2. Добавьте в секцию server в конфигурационном файле Nginx следующее:

error_page 404 /404.html;
error_page 403 =404 /404.html;

Благодаря первой строке Nginx будет использовать /404.html если файл не найден, а благодаря второй строке используется /404.html, когда запрашиваемые ресурсы возвращают 403 ошибку.

WordPress

Вы можете использовать плагин Custom Error Pages, который позволяет настроить пользовательскую страницу для кода состояния 401 и 403.

Я надеюсь, это вам поможет. В любом случае, оставляйте комментарии ниже, если есть пожелания или вопросы.

Перенаправление HTTP на HTTPS с помощью .htaccess

В этом уроке разберемся как сделать перенаправление (редирект) с HTTP на HTTPS через файл htaccess в корне вашего сайта.

Самые полезные редиректы WordPress

Chrome и Firefox уже достаточно давно начали показывать предупреждения о незащищенных сайтах на которых не установлен SSL-сертификат. Без SSL ваш сайт будет выглядеть небезопасным для посетителей. Поэтому использование SSL-шифрованного соединения необходимо для обеспечения безопасности, доступности или соответствия стандарту PCI. Очень важным становится перенаправление с HTTP на HTTPS.

Что такое SSL?

SSL (Secure Sockets Layer) — это стандартный протокол безопасности для установления зашифрованных соединений между веб-сервером и браузером при передаче данных в режиме онлайн.

Использование технологии SSL гарантирует, что все данные, передаваемые между веб-сервером и браузером, остаются зашифрованными.

Для создания SSL-соединения необходим SSL-сертификат. Когда вы решите активировать SSL на своем веб-сервере, вам нужно будет указать все данные о вашем сайте и вашей компании. После этого создаются два криптографических ключа — Private Key и Public Key.

Чтобы заставить ваш веб-трафик использовать HTTPS, нужно отредактировать файл .htaccess.

Прежде чем мы перейдем к тому как сделать редирект с HTTP на HTTPS, я расскажу как вы можете отредактировать файл .htaccess. Если вы уже знаете как это делать, то просто пропустите пару следующих шагов.

Чем можно отредактировать .htaccess

В файле .htaccess есть инструкции/директивы, которые указывают серверу, как действовать в определенных сценариях, и напрямую влияют на функционирование вашего сайта. Общие директивы в файле .htaccess:

  1. Перенаправления
  2. Переписывание URL-адресов

Способы редактирования файла .htaccess

  1. Отредактировать файл на своем компьютере и загрузить его на сервер с помощью FTP.
  2. Использование режима «Edit» в программе FTP, которая позволяет редактировать файл удаленно.
  3. Использование текстового редактора и SSH для редактирования файла.
  4. Использование менеджера файлов в cPanel для редактирования файла.

Редактируем .htaccess через cPanel

Внимание! Создайте резервную копию вашего сайта на случай, если что-то пойдет не так.
  1. Войдите в cPanel вашего хостинга
  2. Перейдите в Files > File Manager
  3. Выберите ваш домен и перейдите в папку вашего сайта
  4. Отметьте в настройках Файлового Менеджера cPanel “Show Hidden Files (dotfiles)” (показать скрытые файлы)
  5. Нажмите Go
  6. После того как откроется новая вкладка или окно, найдите файл .htaccess.
  7. Щелкните правой кнопкой мыши на файле .htaccess и выберите в меню пункт Code Edit (Редактирование кода).
  8. Может появиться диалоговое окно с вопросом о кодировке. Нажмите кнопку Edit (Редактировать), чтобы продолжить.
  9. Отредактируйте файл
  10. Нажмите “Save Changes” (сохранить изменения) после внесения всех изменений
  11. Протестируйте свой сайт, чтобы убедиться, что все сделано правильно, а в случае ошибки восстановите предыдущую версию и повторите попытку
  12. Как только вы закончите, нажмите Close (Закрыть), чтобы закрыть окно редактирования

Перенаправление HTTP на HTTPS

1. Перенаправление всего веб-трафика

Если у вас есть код в .htaccess, добавьте следующее:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

2. Перенаправление только определенного домена

Чтобы перенаправить определенный домен на HTTPS, добавьте следующее:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R,L]

3. Перенаправление только определенной папки

Для перенаправления на HTTPS определенной папки добавьте следующее:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} folder
RewriteRule ^(.*)$ https://www.yourdomain.com/folder/$1 [R,L]
Примечание. Не забудьте в приведенных сниппетах кода поменять yourdomain.com на свое доменное имя. Кроме того, в случае папки замените /folder на фактическое имя папки.

Если вам помог урок, то поделитесь этой статьей с другими, чтобы помочь им перейти на HTTPS, а кроме того оставляйте комментарии по вашему кейсу или с вашими примерами.

Убираем .html из URL

Если вы делаете только лендинг без PHP на одних только HTML файлах, Javascript и CSS, то часто требуетя убрать расширение файлов из URL.

Самый простой способ — прописать в .htaccess несколько строчек директив.

Рекомендация первая (работает 100%, если у вас хостер Beget):

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]

Директивы нужно добавить в самое начало файла .htaccess.

Второй вариант:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html$ /$1 [L,R=301]

Как работают данные рекомендации поможет объяснить следующая картинка:

Самые полезные редиректы WordPress

Есть еще вариант:

RewriteEngine on

RewriteCond %{THE_REQUEST} /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]

Если вы хотите удалить любое другое расширение, например, чтобы удалить расширение .php, просто замените HTML везде на PHP в приведенном выше коде.

Сергей Ермилов
Опубликовано 14.07.2022
Категория: Статьи
Теги:

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

Ваш адрес email не будет опубликован.