RewriteEngine, RewriteCond и RewriteRule

T
На сайте с 23.11.2005
Offline
298
1671

RewriteEngine on

RewriteCond %{HTTP_HOST} ^www\.site\.***

RewriteRule ^(.*)$ http://site.***/$1 [R=301,L]

Вот такую бяку я поместил в .htaccess для того, чтобы мой PR на www зеркале переписать с тройки на четверку, т.к. без www PR=4, сайт раскручивается именно без www.

Все ли корректно и что обозначают значки ^, $1 и [R=301,L] ?

SZ
На сайте с 17.08.2005
Offline
63
#1

При таких вопросах лучше чем мануал по mod_rewrite ничего нету.

RewriteRule

Маркеры:

^ - маркер начала строки

$ - маркер конца строки

Вместо $1, $2 и т.д. подставляется все из первой, второй и т.д. скобки

т.е. в

RewriteRule ^(.*)$ http://site.ru/$1

Вместо about/map.php будет использоваться http://site.ru/about/map.php

Флаги

redirect|R [=code] - вызывает редирект

last|L - последнее правило

т.е.

[R=301,L] - 301 редирект и прекращение процесса преобразования

T
На сайте с 23.11.2005
Offline
298
#2

Спасибо, добавил Вам положительный отзыв.

Алексей Пешков
На сайте с 24.03.2004
Offline
47
#3

Лучше RewriteCond написать так:

RewriteCond %{HTTP_HOST} !site\.***

Т.е. переадресовывать всё варианты, которые не совпадают с каноническим именем сайта, иначе придется анализировать по отдельности запросы домена заглавными буквами, с помощью ip адреса и т. д.

T
На сайте с 23.11.2005
Offline
298
#4

Спасибо. Да, так будет лучше. Сейчас переделаю. Мне действительно нужен редирект не только с www, но и со всего остального. :-)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий