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

Тема в разделе "Веб-серверы - Администрирование", создана пользователем iasson, 22 дек 2006.

Статус темы:
Закрыта.
  1. iasson

    iasson Гость

    Всем Здравствовать.
    Вопрос у меня такой. Я задумал вот каую штуку. Захотел запретить к индексированию страницу по средствам файла robots.txt, казалось нет ничего проще, но я хотел это сделать так, что-бы народ заходя сюда http://www.мойсайт.ru/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.

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

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Код (Text):
    RewriteRule ^robots.txt robots2.txt
    а так работает?
     
  3. iasson

    iasson Гость

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

    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 - этот код ты советовал изменить,
    ну короче получилось следующее, когда запрашиваешь http://www.мойсайт.ru/robots.txt, выдаёт текст из файла robots2.txt, то есть наоборот, то есть получилось не то что хотел.
     
  5. admin

    admin Well-Known Member

    Регистрация:
    8 авг 2003
    Сообщения:
    2.811
    Симпатии:
    0
    Для: iasson
    дай хоть ссылку на сайт твой.
    у меня всё работает.
     
  6. iasson

    iasson Гость

    Серёга, давай я попробую описать то что я делаю и то что собственно я хочу получить.
    Делаю я следующее, сздаю три файла - robots.txt, robots2.txt и собственно .htaccess. Что я хочу. Допустим я закрываю к индексации какую-то часть сайта, но не хочу чтоб об этом узнали пользователи, а чтоб они не узнали нужно что бы заходя допустим сюда http://www.мойсайт.ru/robots.txt, видели нормальный файл где всё разрешено к индексированию, а поисковики шли на другой файл 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 для народа. Вот щас прям и попробую, загружу все три файла и пройду по ссылке http://www.мойсайт.ru/robots.txt, посмотрим чего получится.

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

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

    User-Agent: *
    Disallow:

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

    User-agent: *
    Disallow: /index.htm

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

    User-agent: *
    Disallow: /index.htm

    Вот это и выдается, по идее это должно выдаваться для ботов, а нет выдается для всех, если попытыться набрать http://www.мойсайт.ru/robots2.txt то получаем тоже самое. Вот такие дела. Если нужно пришлю адрес ресурса, если это как то может помочь.
     
  7. garrymax

    garrymax Гость

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

    iasson Гость

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

    garrymax Гость

    Я не делал непосредственно для robots.txt, но могу объяснить (это считается высшей технологией поискового спама, который только визуально можно выловить): В .htaccess пишем, что то вроде
    Код (Text):
    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 закоментируй предыдущую строку и впиши:
    Код (Text):
    RewriteRule ^/robots.txt /cgi-bin/nph-robots.cgi
    Тогда скрипт будет работать только на robots.txt, но если хостер отрубил этот модуль, то работать будет только предыдущий вариант. Зато творить можно все, что захочешь и индексировать страницы на первые позиции, а поисковик подмены не узреет :)

    Заголовок должен быть вроде этого:
    Код (Text):
    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).

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

Поделиться этой страницей