![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Новичок
Пол:
Регистрация: 06.08.2009
Сообщений: 10
Репутация: 3
|
Впервые столкнувшись с mod_rewrite несколько дней назад уже запутался...
Задача: Необходимо, чтобы: - по любой внешней по отношению к mysite.ru ссылке (например, по ссылке в поисковике), указывающей на любой файл, кроме index, пользователь мог перейти только на index; - при прямом наборе адреса пользователем на любой файл сайта mysite.ru, переход пользователя мог бы быть только на index; - переход пользователя по внутренней ссылке, указывающей на любой файл, принадлежащий сайту mysite.ru, не вызывал бы редиректа на index; - НО, необходимо!, чтобы поисковики могли видеть и индексировать все страницы и файлы сайта mysite.ru. (сайт лежит в папке основного домена home/mysite). CMS - отсутствует! Куки могут быть поставлены только в index! (11.02.2011) придумал вот такой алгоритм, надеюсь корректный: Код:
IF
'пользователь'
AND
'ссылка не принадлежит mysite.ru'
THEN
'перенаправить на index.htm'
ELSE
'разрешить все файлы (только для поисковых роботов)'
(13.02.2011) Вот, что получилось наворотить самостоятельно , похожее на мой алгоритм: Код:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
#условие "если ссылка не с mysite.ru":
RewriteCond ${HTTP_REFERER} !^www\.mysite\.ru* [NC,C,NS]
#или так?
RewriteCond ${HTTP_REFERER} !^\www.?\mysite\.ru* [NC,C,NS]
#проверка - пользователь или бот (главное - распознать usera):
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* [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]
#теперь правило - при выполнении условий выше направить на index:
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] в конце правила влияет только на текущее правило? можно ли будет после выполнения этого правила поставить еще правила? |
|
|
|
| Реклама: | astra tech implant system | купить билет на концерт валерии в москве | отрезной минидиск по металлу с хвостовиком 2.35мм. | регистрация вк через ватсап | брекеты стоимость в москве цены |
|
|
#2
|
|
Неактивный пользователь
Пол:
Регистрация: 20.11.2008
Сообщений: 8
Репутация: 1
|
Это называется клоакинг и лучше так не делать. Вашу хитрость обнаружит первый же "хитробот"
|
|
|
|
|
|
#3
|
|
Новичок
Пол:
Регистрация: 06.08.2009
Сообщений: 10
Репутация: 3
|
А меня не волнуют "хитроботы"!
Кроме черного клоакинга, есть еще и легальный. Если у меня весь сайт на флэше и нужно только то, чтобы весь флэш работал (корректно) через первую и единственную страницу index.php. Есть другие варианты такой реализации??? |
|
|
|
![]() |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Правило mod_rewrite для перенаправления не работает | balmie | Настраиваем собственный хостинг | 0 | 02.11.2009 19:32 |
| При использовании mod_rewrite сервер отдает php-код | Searching | Настраиваем собственный хостинг | 3 | 14.10.2009 00:12 |
|
|