htaccess редирект, в зависимости от слов в реферере?

12
T0
На сайте с 04.01.2010
Offline
56
8020

Здравствуйте! Подскажите, пожалуйста, как сделать htaccess редирект на определенную страницу, в зависимости от наличия определенных слов в реферере? В идеале, чтобы можно было задавать несколько слов для редиректа на одну и ту же страницу. И редирект должен работать для любого реферера, кроме своего домена.

Например, пользователи приходящие со страниц

http://thebestcars.com

http://anothersite.net/automobile

http://somesite.com/category/buy-machine.php

по словам "cars, automobile, machine" должны редиректиться на

http://mydomain.com/category/Cars

IL
На сайте с 20.04.2007
Offline
435
#1

RewriteCond %{HTTP_REFERER}  cars
RewriteCond %{HTTP_REFERER} !mydomain\.com
RewriteRule .* http://mydomain.com/category/Cars [R,L]
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
T0
На сайте с 04.01.2010
Offline
56
#2

ivan-lev, большое спасибо!

Если вас не затруднит, прокомментируйте пожалуйста еще пару вопросов:

Вот в этой строчке

RewriteCond %{HTTP_REFERER}  cars

возможно ли как-то перечислять искомые слова или же их можно записывать только по одному для каждой строчки?

RewriteCond %{HTTP_REFERER}  cars

RewriteCond %{HTTP_REFERER} automobile
RewriteCond %{HTTP_REFERER} machine
RewriteCond %{HTTP_REFERER} !mydomain\.com
RewriteRule .* http://mydomain.com/category/Cars [R,L]

И еще, возможно ли этот редирект как-то подружить вот с этим редиректом, который уже есть на сайте? Возникает ошибка "На этой странице обнаружена циклическая переадресация".

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteRule ^category/([^/]+)/?$ /category.php?category=$1 [L]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /category\.php\?category=([^\ ]+)\ HTTP/
RewriteRule ^category\.php$ http://www.mydomain.com/category/%1? [R=301,L]

Options +FollowSymLinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.mydomain\.com$ [NC]
RewriteRule ^(.*) http://mydomain.com/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) http://mydomain.com/ [R=301,L]

</IfModule>
IL
На сайте с 20.04.2007
Offline
435
#3

Для циклической переадресации -

RewriteCond %{HTTP_REFERER}  cars
RewriteCond %{HTTP_REFERER} !mydomain\.com
RewriteCond %{REQUEST_URI} !^/category/Cars$
RewriteRule .* http://mydomain.com/category/Cars [R,L]

Если нужны различные страницы и различные вхождения - повторять целиком, заменяя соответственно.

T0
На сайте с 04.01.2010
Offline
56
#4

Хм... Добавляю эти правила последними, перед </IfModule> и все равно получаю циклическую переадресацию - "Загрузка веб-страницы по адресу http://mydomain.com/category/Cars?category=Cars вызвала слишком много переадресаций."

IL
На сайте с 20.04.2007
Offline
435
#5

Не последними.. а сразу после RewriteEngine on

T0
На сайте с 04.01.2010
Offline
56
#6

Результат тот же...

IL
На сайте с 20.04.2007
Offline
435
#7

И страницу открывать без вопроса.. или доллар в конце убрать.

RewriteCond %{REQUEST_URI} !^/category/Cars

p.s. редиректы зачётные.. сначала на www, потом на "без www"

T0
На сайте с 04.01.2010
Offline
56
#8

Доллар убрал, проблема осталась. Страница с вопросом (http://mydomain.com/category/Cars?category=Cars) получается уже после всех редиректов, на ней все и стопорится. Так-то ссылка ведет на главную страницу http://mydomain.com/, а должно редиректить на страницу категории http://mydomain.com/category/Cars

---------- Добавлено 02.08.2012 в 21:09 ----------

ivan-lev:
p.s. редиректы зачётные.. сначала на www, потом на "без www"

Да, тоже надо поправить, спасибо. :)

siv1987
На сайте с 02.04.2009
Offline
427
#9

RewriteCond %{HTTP_REFERER} (cars|automobile|machine)

RewriteCond %{HTTP_REFERER} !mydomain\.com

RewriteCond %{REQUEST_URI} !^/category/Cars [NC]

RewriteRule .* http://mydomain.com/category/Cars? [R,L]

T0
На сайте с 04.01.2010
Offline
56
#10

siv1987, спасибо за вариант, но проблема с циклической переадресацией так же осталась. :(

Только теперь ошибка выглядит так "Загрузка веб-страницы по адресу http://mydomain.com/category/Cars вызвала слишком много переадресаций.".

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий