В чем разница этих 301 редиректов (www и без)

P
На сайте с 01.05.2006
Offline
161
613

Замотался с редиректами, в инете кто во что горазд пишут, разьясните пому не сложно.

Сначала нашел такой редирект и он вроде бы работает:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^site.com

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

Зачем обнаружил еще такой:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^site\.com$ [NC]

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

1 Зачем тут ^site\.com$ слеш и знак бакса если и без них работает?

2 Зачем нужен [NC], если и без него ввожу сайт в верхнем регистре и он перенаправляется?

3 И чем отличается (.*) от ^(.*)$

4 Как узнать нужен ли "RewriteBase /" и "Options +FollowSymLinks"?

Растолкуйте кому не лень. Спасибо большое.

IL
На сайте с 20.04.2007
Offline
435
#1

Всё уже давным-давно растолковано. Читайте, если не лень..

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Возможно, "так" более читабельно:

http://htaccess.net.ru/doc/mod_rewrite/RewriteRule.php

http://htaccess.net.ru/doc/mod_rewrite/RewriteCond.php

http://htaccess.net.ru/doc/htaccess/Conf-htaccess.php

> 1 Зачем тут ^site\.com$ слеш и знак бакса если и без них работает?

начало(^), конец($) и (\)экранирование точки

> 2 Зачем нужен [NC], если и без него ввожу сайт в верхнем регистре и он перенаправляется?

указывает на регистр... можно потестить на URI (после site.com/blabla site.com/BLAbla)

> 3 И чем отличается (.*) от ^(.*)$

начало, конец.. В данном случае особо не отличается, т.к. (.*) - "жадный" и берёт всё, что получится

> 4 Как узнать нужен ли "RewriteBase /" и "Options +FollowSymLinks"?

Отключить их..

Если редиректит на что-то вроде /var/www или /home/{имя юзера} - нужен RewriteBase

Если есть и используются SymLinks - нужен Options +FollowSymLinks

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
P
На сайте с 01.05.2006
Offline
161
#2

Спасибо за ответ.

NC вообще у меня не работает. Ввожу site.com/BLAbla.html и получаю

404 Error File Not Found

если не ошибаюсь, потому что BLAbla.html у меня залит на хостинг в нижнем регистре.

Или все-таки можно как-то сделать так, что при обращении к ссылке в любом регистре происходил редирект на нижний регистр и 404 не вылезало?

E
На сайте с 21.09.2009
Offline
283
#3

Pantalone, блаблабла сделайте в нижнем регистре и немучйтесь.

SeVlad
На сайте с 03.11.2008
Offline
1609
#4
Pantalone:
если не ошибаюсь, потому что BLAbla.html у меня залит на хостинг в нижнем регистре.

В нормальных ОС (в отличии от винды) регистр в имени файлов имеет значение.

BLAbla.html, blabla.html, blaBla.hTMl и тд - это всё РАЗНЫЕ файлы (и могут существовать рядом. Чего не возможно в винде). Поэтому естественно (и правильно), что нормальный сервер на нормальной ОС говорит о несуществующем файле.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

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