Настройка редиректа с помощью .htaccess

+48

Настройка редиректа с помощью .htaccess

Есть множество способов настроить редирект - через htaccess, javascript, php, настройки сервера и прочее.

Наиболее популярный способ это настройка файла .htaccess- локальная конфигурация веб-сервера Apache и ему подобных. Настройка происходит путем дописывания в данный файл строк конфигурации по установленным правилам.

Файл .htaccess

В корневой директории сайта нужно создать файл с названием .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 доступно множество переменных, со списком которых можно ознакомиться в официальной документации.

Понравилась статья? Поделись с друзьями:
Читайте также
Запуск gulp на хостинге beget
Запуск gulp на хостинге beget

Иногда может потребоваться запустить сборку фронта непосредственно на хостинге, это может быть сайт, где по разным причинам не рационально использовать подход Build & Deploy.

Комментарии ()

    Категории
    События студии все
    Популярное
    Последнее