
Есть множество способов настроить редирект - через htaccess, javascript, php, настройки сервера и прочее.
Наиболее популярный способ это настройка файла .htaccess- локальная конфигурация веб-сервера Apache и ему подобных. Настройка происходит путем дописывания в данный файл строк конфигурации по установленным правилам.
В корневой директории сайта нужно создать файл с названием .htaccess, если же файл уже существует - можно перейти к следующему шагу.
Простой редирект подойдет для перенаправления с конкретного адреса. Например при смене адреса определенной страницы.
За это отвечает команда Redirect, в конце файла нужно вставить строчку примерно следующего содержания:
Redirect /oldpage /newpage
В данном примере со страницы /oldpage происходит перенаправление на страницу /newpage
По умолчанию редирект передается с кодом 301 - перемещен навсегда, если же нужно изменить код на другой. Например 302 - перемещен временно, пример изменится следующим образом:
Redirect 302 /oldpage /newpage
Иногда нужно перенаправить сразу группу страниц, например при смене адреса раздела и в последствии всех вложенных документов, в таком случае следует воспользоваться командой RedirectMatch, которая позволяет использовать регулярные выражения.
Регулярное выражение - это обычная строка, как и в первом примере, но некоторые символы имеют специальное назначение:
() выделяет несколько символов, к которым присваивается номер для использования в назначении редиректа;[] разрешенные символы;[^] запрещенные символы;\ экранирование спецсимволов;. любой символ;^ начало строки;$ конец строки;* повторение неограниченное количество раз;+ аналогично * но без возможности отсутствовать;? ставится после символа, который может отсутствовать;| обозначает условие "или", например, выражение "C|D" означает "C или D";# не используется.
Допустим "статьи" стали "новостями". Тогда редирект выглядит:
RedirectMatch /articles/(.*)$ /news/$1
В данном примере страница /articles/article-name перенаправит на /news/article-name
Код редиректа задается так же как и в первом примере.
Сложные редиректы реализуются модулем mod_rewrite входящим в состав веб-сервера Apache.
Для формирования редиректа используются уже две директивы: RewriteCond и RewriteRule.
RewriteCond задает условие, при котором сработает редирект.
RewriteRule задает правила редиректа.
Директиву RewriteCond можно указать несколько раз перед директивой RewriteRule, комбинируя таким образом несколько условий.
Чтобы сложные редиректы работали, перед ними в файле должны присутствовать строки:
RewriteEngine On
RewriteBase /
если их нет- нужно дописать.
Пример редиректа с www.site.com на site.com:
RewriteCond %{HTTP_HOST} !^site\.com [NC]
RewriteRule (.*) http://site.com/$1 [R=301,L]
В данном примере- если адрес начинается не с домена- сработает редирект на домен.[R=301,L] - флаг R задает код редиректа, L - останавливает процесс преобразования.
В директиве RewriteCond доступно множество переменных, со списком которых можно ознакомиться в официальной документации.
Иногда может потребоваться запустить сборку фронта непосредственно на хостинге, это может быть сайт, где по разным причинам не рационально использовать подход Build & Deploy.
Комментарии ()