Главная | Контакты



Главная > Программы > Apache

Правильное оформление файла .htaccess | Redirect, RewriteRule, 404

Файл .htaccess служит для управления некоторыми функциями сервера Apache. Все изменения в нём производятся с помощью внесения определённых записей в любом текстовом редакторе (блокнот, Dreamweaver и пр. Не путать с текстПроцессорами, типа MSWord).
Внимательно! В проводнике Windows будет невозможно создать файл с таким именем (т.е. без имени, только с расширением). Его необходимо будет создать в альтернативной программе (например Far Manager) или скопировать готовым откуда угодно и отредактировать.
Файл помещается непосредственно в корневую директорию сайта на сервере. Его правила распространяются на данную директорию и все поддиректории, находящиеся в ней.


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 - выражение в скобках.


2. Правила подмены строк. 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


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

ErrorDocument 404 /404.php

Материал взят с сайта: http://forum.searchengines.ru/showthread.php?t=613423

Главная > Программы > Apache