От автора: В этом уроке мы с вами начнем знакомиться с директивами перенаправления. Возможности данных директив так или иначе используются практически в любом проекте, без них сложно представить работу мало-мальски полноценного сайта: их возможности используются для СЕО, для создания ЧПУ, для простого редиректа, для ограничения доступа к сайту или его части и т.д.
Директивы перенаправления (или редиректа) делят на две группы: директивы простого перенаправления и директивы сложного перенаправления (модуль mod_rewrite). Возможности первой группы директив ограничиваются банальным физическим редиректом, при котором пользователь не только получит содержимое файла, на который был произведен редирект, но и произойдет изменение адреса URL (внешний редирект).
Возможности же второй группы директив позволяют производить преобразования URL «на лету», не изменяя адресную строку браузера. Эта возможность позволяет использовать ЧПУ на сайте (этой темы мы коснемся в следующем уроке).
Итак, первая директива Redirect имеет следующий синтаксис:
1 |
Redirect code old_url new_url |
Здесь:
code – необязательный код статуса, с которым будет произведен редирект (по умолчанию — 302)
old_url – запрос
new_url – адрес перенаправления
Синтаксис данной директивы довольно строг и предполагает использование только абсолютных адресов, т.е. в адрес должен начинаться со слеша (слеш указывает на корень сайта). Для адреса перенаправления (new_url) допускается использование схемы (т.е. протокола).
И несколько примеров использования директивы Redirect:
1 2 3 4 5 6 7 8 9 10 11 |
# Редирект с file.html (находится в корне) на file.php (там же) Redirect /file.html /file.php # Редирект с главной страницы сайта на внешний адрес Redirect / //ya.ru # Редирект с file.html на file.php с указанием кода статуса Redirect 301 /file.html /file.php # Используя 410 код мы сообщаем, что данный url является «мертвым» Redirect 410 /file.html |
В отличие от директивы Redirect, вторая директива – RedirectMatch – позволяет использовать регулярные выражения, чтобы задать шаблон запроса (old_url). Это более гибкая директива, поскольку таким образом мы можем производить редирект не только для одного файла, но и для группы файлов.
Давайте приведем несколько примеров работы с директивой RedirectMatch:
1 2 3 4 5 |
# При обращении к файлам RAR сделаем редирект на файл file.php и в GET-параметре file передадим путь к запрошенному архиву RAR #RedirectMatch (.+\.rar)$ /file.php?file=$1 # При обращении к файлам RAR или ZIP сделаем редирект на файл file.php и в GET-параметре file передадим имя запрошенного архива #RedirectMatch .*?([^/]+\.(rar|zip))$ /file.php?file=$1 |
В следующем уроке мы начнем знакомиться с директивами модуля mod_rewrite, которые предоставляют гораздо больше возможностей по работе с перенаправлениями.
На этом текущий урок завершен. Удачи и до встречи в следующем!