Осторожно, mod_rewrite

S
На сайте с 27.04.2005
Offline
25
733

Недавно попросили посмотреть, почему не индексируется новый сайт.

На сайте стояло исправление имени на каноническое (то есть любое имя, например, site.ru подправлялось на www.site.ru), но ссылки на сайт ставились с большой буквы, то есть http://www.Site.ru/. В результате бот Яндекса получал 302 редирект по заходу на http://www.Site.ru/robots.txt или даже просто http://www.Site.ru/ и спокойно забивал на этом.

Притом судя по логам, ни один браузер (включая всякие wget'ы и ботов других поисковых систем) себя так не ведёт и передаёт имя всегда в нижнем регистре, соответственно всегда получает отклик 200.

Добавление опции [NC] (не учитывать регистр для правил) в mod_rewrite решило проблему и в течении недели сайт появился в выдаче. Тут, конечно, виноват администратор сайта, что неправильно составил правило для mod_rewrite, но факт интересный.

[Удален]
#1

согласен ... :)

South
На сайте с 11.11.2005
Offline
7
#2

Может посмотришь мой сайт ? :-) У меня тоже небольшая проблема.

Best Regards Yuriy O. Gorlov
S
На сайте с 27.04.2005
Offline
25
#3

Скинь адрес, посмотрю

T0
На сайте с 12.08.2004
Offline
38
#4

Подтверждаю, была точно такая же проблема с сайтом. тоже редирект на поддомен "www." и ссылки стояли с большой буквы. Все роботы (рамблер, гугл) проиндексировали, а Яндекс получал 302 и дальше не шел. Правда я не знал про [NC], пришлось убрать редирект.

Torio
На сайте с 25.06.2005
Offline
124
#5

Вопрос в тему: на сайте я использую псевдостатику для каталога. Проблема такая:

RewriteBase /

RewriteRule ^(.*)pag(.*)$ $1&page=$2

Вот это правило для каталога. Страница лежит в корне. Соответственно правило для корня, так? У меня еще есть на сайте директория count, в ней лежит скрипт, который использует также переменную с именем page.... Проблема в том, что похоже в директории count тоже действует правило для корня... Как поправить можно это?

С уважением, Виктор. Тел: (905) 610-95-80
S
На сайте с 27.04.2005
Offline
25
#6
Torio:
Вопрос в тему: на сайте я использую псевдостатику для каталога. Проблема такая:

RewriteBase /
RewriteRule ^(.*)pag(.*)$ $1&page=$2

Вот это правило для каталога. Страница лежит в корне. Соответственно правило для корня, так? У меня еще есть на сайте директория count, в ней лежит скрипт, который использует также переменную с именем page.... Проблема в том, что похоже в директории count тоже действует правило для корня... Как поправить можно это?

можно поставить условия

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

это отменит действие правил для реально существующих директорий

или поставить условие с проверкой конкретно на count

Torio
На сайте с 25.06.2005
Offline
124
#7
можно поставить условия RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d

500 ошибка :(

Я просто файлам другие имена присвоил - на запросы вроде не распростораняется.... Ну если будут ошибки придется скрипт малость подправить... А пока все работает - буду тестировать. :)

WEBCOM ART
На сайте с 12.11.2005
Offline
5
#8

К сожалению большинство подобных проблем из-за криворуких админов.

WebCom ART - Создание и продвижение сайтов, дизайн, интернет-реклама (http://artw.ru) Tel.: +7 (812) 337-26-88, 337-26-89
S
На сайте с 27.04.2005
Offline
25
#9
Torio:
500 ошибка :(

А как поставили?

надо так:


RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)pag(.*)$ $1&page=$2

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