Mod_rewrite: роботам - все, пользователю - только index!

Статус
Закрыто для дальнейших ответов.

drawline

Новичок
Регистрация
14.02.2011
Сообщения
2
Впервые столкнувшись с mod_rewrite несколько дней назад уже запутался...
Задача:
Необходимо, чтобы:
- по любой внешней по отношению к mysite.ru ссылке (например, по ссылке в поисковике), указывающей на любой файл, кроме index, пользователь мог перейти только на index;
- при прямом наборе адреса пользователем на любой файл сайта mysite.ru, переход пользователя мог бы быть только на index;
- переход пользователя по внутренней ссылке, указывающей на любой файл, принадлежащий сайту mysite.ru, не вызывал бы редиректа на index;
- НО, необходимо, чтобы поисковики могли видеть и индексировать все страницы и файлы сайта mysite.ru.

(сайт лежит в папке основного домена home/mysite).

(11.02.2011) придумал вот такой алгоритм, надеюсь корректный:
Код:
IF
     'пользователь'
    AND
     'ссылка не принадлежит mysite.ru'
THEN
    'перенаправить на index.htm'
ELSE
    'разрешить все файлы (только для поисковых роботов)'
Подскажите, плз, как написать такое на языке htaccess.

(13.02.2011) Вот, что получилось наворотить самостоятельно , похожее на мой алгоритм:
Код:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond ${HTTP_REFERER} !^www\.mysite\.ru* [NC,C,NS]
#или так?
RewriteCond ${HTTP_REFERER} !^\www.?\mysite\.ru* [NC,C,NS]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Lynx.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Opera.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Firefox.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Safari.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Lynx.* [NC]
Redirect 303 / http://www.mysite.ru
#или так?
RewriteRule ^(.*)$ index.php/$1 [R,L]
#синтаксис в предыдущем и следующих?
RewriteRule ^(.*)|(.*)\.(.*)$ http://www.mysite.ru/$1 [R=permanent,L]
#или так?
RewriteRule (.*) http://www.mysite.ru/$1 [R=permanent,L]
Поправьте, плз, если что-где не так (там бы еще клиентов, наверное, добавить бы?).
В коде 4 варианта перенаправления - какой оставить, как было бы правильно?.
+ корректность синтаксиса?

Насколько необходимо наличие флагов [C] и [NS] в первом условии?
Наличие флага [L] в конце правила влияет только на текущее правило?
можно ли будет после выполнения этого условия поставить условие для запрета mail-ботов?
...и не только?
 

pDragon

Member
Регистрация
27.01.2011
Сообщения
13
Это не очень эффективный способ "защиты" файлов.
Дело в том, что HTTP_USER_AGENT это штука которая может быть легко изменена браузером или создана сторонним сервером очень легко (сам так делаю в лисе подменяя на агент поискового робота :) (например дополняшка: User Agent Switcher))
разные примеры URL преобразований:
http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html
 

drawline

Новичок
Регистрация
14.02.2011
Сообщения
2
Ну хоть кто-то откликнулся... :)
По mod_rewrite я читал, этим документом весь инет забит, а вот чтоб в таких объяснялках поподробнее разъяснить принципы работы директив - это еще поискать (вряд ли удастся найти). Да и синтаксис везде (абсолютно) страдает!! ...и где он представлен правильно, неискушенному челу выяснить оооочень трудно!
Меня не тревожит тот факт, что пользователь может намеренно заменить USER_AGENT. Если такой (продвинутый) пользователь захочет скачать себе те файлы, которые я таким образом пытаюсь скрыть, то не поможет ничего (не абсолютно, конечно).
Волнует только то, чтобы пользователь НЕНАМЕРЕННО НЕ ПОПАЛ на эти файлы.
Поэтому вопрос остается.

В посте всего лишь просьба откомментировать, поправить код и ответить на пару вопросов.
Неужели за две недели, кроме поправок о возможности подмены USER_AGENT, никто по существу так и не ответит????
 
Статус
Закрыто для дальнейших ответов.
Верх Низ