Не совсем работает .htaccess

  • Автор темы iasson
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

iasson

Всем Здравствовать.
Вопрос у меня такой. Я задумал вот каую штуку. Захотел запретить к индексированию страницу по средствам файла robots.txt, казалось нет ничего проще, но я хотел это сделать так, что-бы народ заходя сюда видели нормальный файл, где всё разрешено к индексации, а для поисковиков я создал другой файл, robots2.txt, в котором то и запретил некотороые разделы сайта к индексации, но идея вобщем понятна, что бы роботы попадали на один файл и выполняли команды из него, а народ шел на "чистый" robots.txt, и видел что всё нормально. Для этого собственно написал файл .htaccess, в котором и написал:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*gaisbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*crawler.* [NC,OR]
RewriteRule ^robots\.txt$ robots2.txt [L,R]

Ну я думаю код знающем понятен.
Потом загрузил все три файла это файлы - robots.txt, robots2.txt (для поисковиков) и естественно .htaccess в корневую директорию сайта, ну и получилось, что при обращении к файлу robots.txt выдается ошибка 404, а если обращаемся к файлу robots2.txt то видим его нормально, да если убрать файл .htaccess из корневой директории, то можно сразу зайти на файл robots.txt.

Подскажите пожалуйста что я не так делаю, может где ошибаюсь, или может надо всё по другому переделывать.
Заранее ВАМ ВСЕМ очень признателен.
Денис.
 
A

admin

Код:
RewriteRule ^robots.txt robots2.txt

а так работает?
 
I

iasson

Серёга, можно тебя буду так называть, если честно попробую завтра и обязательно тебе сообщу.
Огромное тебе спасибо.
Со всеми наилучшими к тебе Денис.
 
I

iasson

Опять ничего не вышло, вставил твой код, получилось

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*gaisbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*crawler.* [NC,OR]
RewriteRule ^robots.txt robots2.txt - этот код ты советовал изменить,
ну короче получилось следующее, когда запрашиваешь , выдаёт текст из файла robots2.txt, то есть наоборот, то есть получилось не то что хотел.
 
A

admin

Для: iasson
дай хоть ссылку на сайт твой.
у меня всё работает.
 
I

iasson

Серёга, давай я попробую описать то что я делаю и то что собственно я хочу получить.
Делаю я следующее, сздаю три файла - robots.txt, robots2.txt и собственно .htaccess. Что я хочу. Допустим я закрываю к индексации какую-то часть сайта, но не хочу чтоб об этом узнали пользователи, а чтоб они не узнали нужно что бы заходя допустим сюда , видели нормальный файл где всё разрешено к индексированию, а поисковики шли на другой файл robots2.txt и выполняли команды только из неог, то есть два файла один для роботов другой для людей, потом делаем файл .htaccess в котором и записываем следующее:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*gaisbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*crawler.* [NC,OR]
RewriteRule ^robots.txt robots2.txt

Потом все три файла загружаем в корневую директорию сайта, итак повторюсь в файле robots2.txt информация для поисковиков, в файле robots.txt для народа. Вот щас прям и попробую, загружу все три файла и пройду по ссылке , посмотрим чего получится.

Ну всё сделал как и говорил, короче что бы было понятнее:

Содержание файла robots.txt :

User-Agent: *
Disallow:

То есть разрешаю индексировать все, этот файл для народа. Теперь второй файл robots2.txt, вот его содержимое:

User-agent: *
Disallow: /index.htm

С файлами врод-бы разобрались, ну вот когда захожу по адресу , это после того как закачал robots.txt, robots2.txt и .htaccess, вот что выдается :

User-agent: *
Disallow: /index.htm

Вот это и выдается, по идее это должно выдаваться для ботов, а нет выдается для всех, если попытыться набрать то получаем тоже самое. Вот такие дела. Если нужно пришлю адрес ресурса, если это как то может помочь.
 
G

garrymax

А может проще убрать оба файла, а 404 ошибку nph-скриптом обрабатывать, на предмет агента, и выдавать требуемое содержимое - так даже свободы в вариантах будет больше.
 
I

iasson

Не, не проще, желательно бы здесь разобраться, почему не работает, хотя, напиши как бы ты это сделал, только если можно поподробнее.
Заранее благодарен.
 
G

garrymax

Я не делал непосредственно для robots.txt, но могу объяснить (это считается высшей технологией поискового спама, который только визуально можно выловить): В .htaccess пишем, что то вроде
Код:
ErrorDocument 404 /cgi-bin/nph-robots.cgi
убиваеи сам robots.txt, а в этом nph-robots.cgi читаем CGI-переменную HTTP_USER_AGENT, если она содержит что-то вроде StackRambler, Aport или Yandex/1.03.000 (compatible; Win16; M) и так далее, а REQUEST_URI содержит /robots.txt, то выдаем ему требуемый текст, если HTTP_USER_AGENT содержит что-то вроде Mozilla, а можно и по умолчанию, то выдаем другое. Если REQUEST_URI не содержит /robots.txt, то проще открыть запрошенную страницу, считать и выдать на поток ее. Если она содержит код PHP или PERL, то прогнать страницу через эти инепритаторы - когда работает технология non-parseable headers, то сам сервак бездействует - отдает все на милость скрипта.

Можно упростить, что бы целый движек не писать, но это при условии работы модуля mod_rewrite (или rewrite_module), а похоже у тебя как раз с ним проблемы, но все равно попробуй в .htaccess закоментируй предыдущую строку и впиши:
Код:
RewriteRule ^/robots.txt /cgi-bin/nph-robots.cgi
Тогда скрипт будет работать только на robots.txt, но если хостер отрубил этот модуль, то работать будет только предыдущий вариант. Зато творить можно все, что захочешь и индексировать страницы на первые позиции, а поисковик подмены не узреет :)

Заголовок должен быть вроде этого:
Код:
HTTP/1.1 200 OK
Date: Wed, 27 Dec 2006 21:14:59 GMT
Server: Apache
Connection: close
Content-Type: text/html; charset=windows-1251
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Last-Modified: Wed, 27 Dec 2006 21:14:59 GMT
обязательно, после заголовка две пустых строки - они отделяют заголовок от тела страницы.

Для самого скрипта самое главное (можно и бинарника, но хостеры библиотеки прикрывают и часто не работает), что бы имя скрипта начиналось с nph- это даст возможность самому выводить заголовок сервера. Иначе робот поисковика узреет 404 ошибку и проигнорирует остальной текст.
Извиняюсь, что не готовый вариант, но его писать лень, а вот что бы проверить заголовки возми тут (для себя давно писал из примеров Delphi).

Еще одно на заметку: Рамблеровскому роботу запрещать индексацию директорий бесполезно - у них там похоже ошибка. Про другие не знаю.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!