В статье приведены примеры стандартных перенаправлений, которые могут быть настроены с помощью файла .htaccess вашего сайта.
Указанные перенаправления будут работать:
- для большинства конфигураций VDS, где используется веб-сервер Apache (необходимо, чтобы был включен модуль mod_rewrite);
- для серверов с VestaCP или ispmanager, установленными через панель управления аккаунтом. В ispmanager простые перенаправления могут также быть настроены средствами панели.
Обратите внимание, что данные редиректы не подойдут для OS Bitrix7.
Что такое .htaccess?
Файл .htaccess позволяет вам настраивать конфигурацию веб-сервера Apache для конкретного сайта, не затрагивая настройки основных конфигурационных файлов Apache (httpd.conf в CentOS и apache2.conf в Ubuntu/Debian) и не рискуя что-то необратимо сломать на сервере. Директивы, указанные в .htaccess будут действовать только для каталога, в котором размещается этот файл, и его подкаталогов.
Для подкаталогов также можно создавать дополнительные .htaccess-файлы; при этом они переопределят настройки, назначенные в .htaccess на уровне выше.
В .htaccess можно:
- Настраивать перенаправления с одного адреса на другой;
- Управлять настройками PHP;
- Задавать собственные страницы ошибок;
- Устанавливать права доступа к файлам;
- — и многое другое.
Как создать .htaccess?
Файл необходимо создать в каталоге сайта (обычно это /var/www/html, но у вас путь может отличаться — в этом случае замените его в командах) с помощью подключения по SSH или FTP.
При подключении по SSH это можно сделать так:
Как «включить» .htaccess?
Чтобы веб-сервер Apache читал и применял настройки из файла .htaccess, в главном конфигурационном сайте Apache — httpd.conf или apache2.conf — должна быть прописана директива Allow Override All для нужной нам директории.
Рассмотрим на примере сервера с LAMP с системой Ubuntu 20.04.
Откроем файл конфигурации apache2.conf:
Стандартно сайт размещается в директории /var/www/html/. Видим, что Allow Override для нее имеет значение None — значит, .htaccess не будет работать.
Если ваш сайт размещен по другому пути (не /var/www/.../), исправьте путь на верный или добавьте еще один блок <Directory> с нужным путем.
Меняем значение на Allow Override All:
Сохраняем изменения (Ctrl + X, затем Y, затем Enter).
И перезагружаем веб-сервер:
Теперь мы можем прописывать директивы для сайта в файле .htaccess.
Как проверить, что mod_rewrite включен?
Во-первых, убедитесь, что у вас включен модуль mod_rewrite. Для этого выполните команду:
В выводе должно быть rewrite_module (shared):
Если вывод отличается — включите mod_rewrite командой:
Как прописывать редиректы?
Директивы перенаправлений необходимо указывать в блоке <IfModule mod_rewrite.c> со следующим содержимым:
В качестве правил указываются директивы RewriteCond и RewriteRule с необходимыми значениями — RewriteCond задает условие, при котором происходит выполнение правила, указанного в RewriteRule.
Например, так мы настроим перенаправление с HTTP на HTTPS для сайта mydomain.com:
Настройка перенаправлений
Перенаправление на другой домен
В примере ниже выполняется редирект с www.old-domain.ru на www.new-domain.ru:
Перенаправление c http на https
1. Перенаправление с http://example.ru на https://example.ru.
1a. Для серверов с панелью VestaCP:
1b. Для серверов с панелью ispmanager при использовании Nginx:
2. Перенаправление с http://example.ru на https://www.example.ru.
3. Перенаправление с http://www.forum.example.ru на https://forum.example.ru.
4. Перенаправление с http://forum.example.ru на https://www.forum.example.ru.
Перенаправление с https на http
Перенаправление на http для одной страницы
Вариант 1:
Вариант 2:
Пример: отключение перенаправления на https для страницы bitrix/admin/1c_exchange.php для корректной работы обмена данных с 1C:
Оно же для панели VestaCP:
Перенаправление на https для одной страницы
Перенаправление домена без www на домен с www
В примерах осуществляется редирект с forum.example.ru на www.forum.example.ru.
Способ 1:
Способ 2, без указания домена:
Перенаправление домена с www на домен без www
В примерах осуществляется перенаправление с www.forum.example.ru на forum.example.ru.
Способ 1:
Способ 2.
Перенаправление в подкаталог
Перенаправление поддомена forum.example.ru в подкаталог forum: