PDA

Показать полную графическую версию : Условный редирект в .htaccess


lexast
18-06-2009, 22:41
Такой вопрос, как в файле .htaccess сделать перенаправление при переходе на страницу с другого ресурса, а со своего оставить

Sham
19-06-2009, 01:26
вопрос неполный, но принцип состоит в проверке HTTP_REFERER, который юзер может изменить или отключить... те 100% способа не существует...

RewriteEngine on

RewriteCond %{HTTP_REFERER} !%{HTTP_HOST}
RewriteRule . http://redirect_url.ru [R]

lexast
19-06-2009, 01:44
ну вообщем перенаправлять на другую страницу при переходе с другого сайта, а при переходе со страниц этого же сайта пропускать

Sham
19-06-2009, 03:03
поскольку htaccess обрабатывается при любом запросе в каталог, то нужно разделить запросы на картинки/файлы и странички. Внизу указан список расширений, запросы на которые перенаправляются...

RewriteEngine on

RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !%{HTTP_HOST}
RewriteRule \.(html?|php|phtml|pl)$ http://redirect_url.ru [R]

lexast
19-06-2009, 18:22
попробую на примере:
тоесть есть сайт www.site.ru , есть файл www.site.ru/file.rar, при обращении к этому файлу со страницы www.site.ru/страница.html редирект не нужен а скажем с сайта www.other_site.ru нужен редирект на страницу www.site.ru, тут конкретно с одного сервера редирект нужен а с остальных нет, а еще как вариант что редирект нужен при обращении к файлу со всех сайтов кроме своего

Sham
19-06-2009, 18:51
расширения там добавьте какие нужно через "|" (или удалите лишние)...

lexast
19-06-2009, 21:21
извиняюсь за назойливость, так будет правильно для моего примера?


RewriteEngine on

RewriteCond %{HTTP_REFERER} ^http://www.other_site.ru
RewriteCond %{HTTP_REFERER} !%{HTTP_HOST}
RewriteRule \.(rar)$ http://www.site.ru [R]

Sham
19-06-2009, 21:34
RewriteEngine on

# проверка наличия заголовка, и что это похоже на УРЛ
# если наличие REFERER обязательно, то 1 строка не нужна
RewriteCond %{HTTP_REFERER} ^http://
# сравнение заголовков
RewriteCond %{HTTP_REFERER} !%{HTTP_HOST}
# в данном случае, если расширение одно, то скобки не нужны
RewriteRule \.rar$ http://www.site.ru [R]

lexast
21-06-2009, 18:50
спасибо, все гуд
а где можно найти полный фак по этому файлу?

proxy
21-06-2009, 19:07
можно тут (http://www.iho.ru/faq/manual/htaccess.html#Redirect)
или тут (http://www.opennet.ru/base/faq/htaccess_howto.txt.html)
или еще тут (http://webdesign.site3k.net/?/docs/htaccess.html)
и т.д. :smirk:




© OSzone.net 2001-2012