Вы здесь: Главная > Блог > Как правильно оформить файл .htaccess. Redirect, RewriteRule, 404.

Как правильно оформить файл .htaccess. Redirect, RewriteRule, 404.

.htaccess (от. англ. hypertext access) — файл дополнительной конфигурации веб-сервера Apache, или подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла.


Вносить изменения в данный файл возможно в любом текстовом редакторе ( Notepad ++, Dreamweaver или просто в стандартном блокноте Windows ). Данный файл должен обязательно находиться в корневой директории сайта на сервере, так как его правила распостраняются на эту директорию и все поддиректории относящиеся к ней.

1. Переадресация страниц. Redirect.

Производится для указания клиенту (браузеру, поисковому роботу), что данная страница навсегда (если redirect 301) или временно (если redirect 302) переехала по другому адресу.

Код:

Redirect 301 /filename.html http://domain.tld/newfilename.php

где /filename.html — название старой страницы ( запись производится без указания протокола и домена, от корня сайта. )

http://domain.tld/newfilename.php — новое имя той же страницы. ( записывается с указанием протокола и домена. Домен может быть как тот же, так и любой другой ).

Например запись вида: 

Redirect 301 / http://domain.tld/

будет значить, что все страницы сайта с верхнего уровня перенесены на новый сайт domain.tld (на главную страницу!)

При необходимости выполнить редирект постранично на другой домен (или поддомен) можно воспользоваться директивой RedirectMatch, которая позволяет использовать регулярные выражения.

Код:

RedirectMatch permanent ^(.*)$ http://domain.tld$1

где ^(.*)$ — страница, которую нужно перенести с данного домена. (^ — начало «сравниваемой» строки, (.*) — любое количество любых символов, $ — конец сравниваемой строки), http://domain.tld — домен на который был перемещён сайт, $1 — выражение в скобках.

Правила подмены строк. RewriteRule.

Используется для замены для сервера адресной строки на необходимую ему (например, передача GET-параметров в адресе страницы)

Код:

RewriteEngine on 
RewriteRule ^(.+)/$ index.php?file=$1
RewriteRule ^(.+)/(.+).html$ index.php?file=$1&page=$2

Где RewriteEngine on — включение модуля Rewrite, ^(.+)/$ — исходная строка, адрес в браузере (^ — начало строки, (.+) — два или более любых символа — можно написать и (.*), / — экранированный символ «/»), index.php — файл-скрипт, который должен быть запущен, ?file=$1 — параметр, который должен быть передан ($1 — выражение в первых скобках).

То есть

Строка RewriteRule ^(.+)/(.+).html$ index.php?file=$1&page=$2 означает:
Адрес вида
http://domain.tld/filename/pagename.html 
сервер воспримет как 
http://domain.tld/index.php?file=filename&page=pagename

Внимание! В данном случае клиент (браузер, поисковый робот) ничего знать не будет. Для него адрес страницы не изменится. Запись вида:
RewriteEngine on 
RewriteRule ^(.+)/$ index.php?file=$1 [R=301, L]
будет совершать подмену не только для сервера, но уже и для клиента. Т.е. — это аналог директивы Redirect 301. «L» — будет означать, что это правило выполняется последним в файле .htaccess

Обработка ошибки 404

Позволяет выдавать одну определённую страницу вместо отсутствующих и вместо ошибки 404.

Код:

ErrorDocument 404 /404.php

где 404.php — страница, которая загружается вместо отсутствующей.