Хостинг » Часто задаваемые вопросы » PHP »

Директивы простого перенаправления (редирект)

  Украинский хостинг провайдер CityHost.com.ua Киев: (044) 3-777-4-88
другие города
 
 
Киев:
(044) 3-777-4-88
Kyivstar:
(098) 375-67-18
Life:):
(093) 177-06-25
МТС:
(066) 922-59-58
Днепропетровск:
Донецк:
(062) 210-42-99
Запорожье:
(061) 228-54-50
Львов:
(032) 229-56-50
Oдесса:
Ровно:
(362) 42-04-02
Харьков:
Чернигов:
(046) 261-60-99
Черновцы:
(037) 293-13-51
Москва:
(495) 989-86-02
Главная » Вопросы-Ответы » PHP »

Директивы простого перенаправления (редирект)

Наиболее часто используемые, и наиболее сложные директивы .htaccess. Предположим мы хотим при запросе нашего сайта переадресовать пользователя на другой URL, для этого нам необходимо в корневую директорию сайта добавить файл .htaccess со следующим содержимым

Redirect / http://www.example.com
# http://www.example.com - URL На который мы перенаправляем запросы

более сложный пример, мы хотим определенные страницы нашего сайта переадресовывать на другие сайты

Redirect /linux http://www.linux.org
Redirect /linux/download.html http://www.linux.org/dist/download_info.html
Redirect 301 /kernel http://www.linux.org

теперь при наборе http://mysite.ru/linux будут открываться http://www.linux.org. В последнем примере WEB сервер будет передавать код 301, что означает "документ перемещен постоянно".

Ставшая классической задача слияния имена сайта с www и без него, решается так:

Options +FollowSymLinks  
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursite.com
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=permanent,L] .

или альтернативный синтаксис:

Options +FollowSymLinks  
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

где [R=301,L]- это указание перенаправить клиента и отправить ему код статуса 301 (R=301), а также сделать это правило последним (L).

Синтаксис команды Redirect выглядит следующим образом:

Redirect [status] URL_LOCAL URL_REDIRECT

status : необязательное поле, определяет код возврата, допустимые значения:

    * permanent (301 — документ перемещен постоянно)
    * temp (302 — документ перемещен временно)
    * seeother (303 — смотрите другой)
    * gone (410 — убран)

URL_LOCAL : локальная часть URL запрашиваемого документа.

URL_REDIRECT : URL куда должен быть выполнен редирект.


Директива RedirectMatch аналогична директиве Redirect за исключением того, что в RedirectMatch возможно использование регулярных выражений, что несомненно может быть удобно в некоторых условиях. Например для организации передачи параметров скрипту в теле URL.

RedirectMatch /(.*)/(.*)/index.html$ http://mysite.ru/script.php?par1=$1&par2=$2


Хотя данный пример и вызовет перезагрузку страницы в дальнейшем его можно будет улучшить. Здесь необходимо сделать небольшое лирическое отступление и поговорить о синтаксисе регулярных выражений.

В регулярном выражении можно использовать любые печатные символы и пробел, но часть символов имеет особое значение:

#     Круглые скобки () используются для выделения групп символов. В дальнейшем к ним можно обращаться по номеру.
# Символ ^ обозначает начало строки.
# Символ $ обозначает конец строки.
# Символ . обозначает любой символ.
# Символ | обозначает альтернативу. Например, выражения "A|B" означают "A или B".
# Символ ? ставится после символа (группы), который может как присутствовать, так и отсутствовать.
# Символ * ставится после символа (группы), который может отсутствовать или присутствовать неограниченное число раз подряд.
# Символ + действует аналогично символу * с той лишь разницей, что предшествующий ему символ обязательно должен присутствовать хотя бы один раз.
# Квадратные скобки [] используются для перечисления допустимых символов.
# Квадратные скобки [^] используются для перечисления недоступных символов.
# Символ ставится перед спецсимволами, если они нужны в своем первозданном виде.
# Все, что расположено после символа '#', считается комментарием.

Это все основные примитивы с помощью которых можно построить любое регулярное выражение.

 

 
  2004 - 2011 СитиХост профессиональный, платный хостинг в Украине Rambler's Top100 www.megastock.ru