Перейти к содержимому

Фотография
- - - - -

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


  • Вы не можете создать новую тему
  • Закрытая тема Тема закрыта
Сообщений в теме: 2

#1 drawline

drawline

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 14 Февраль 2011 в 21:46

Впервые столкнувшись с 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-ботов?
...и не только?
  • 0

Спонсор

#2 pDragon

pDragon

    Прохожий

  • Участник
  • 0
    13 сообщ.

Отправлено 23 Февраль 2011 в 15:53

Это не очень эффективный способ "защиты" файлов.
Дело в том, что HTTP_USER_AGENT это штука которая может быть легко изменена браузером или создана сторонним сервером очень легко (сам так делаю в лисе подменяя на агент поискового робота :) (например дополняшка: User Agent Switcher))
разные примеры URL преобразований:
http://www.egoroff.s...writeguide.html
  • 0

#3 drawline

drawline

    Прохожий

    Топикстартер
  • Новичок
  • 0
    2 сообщ.

Отправлено 25 Февраль 2011 в 02:47

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

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



Похожие темы Свернуть

Статистика

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 скрытых пользователей