
Есть множество способов настроить редирект - через 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.
Комментарии ()