Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Htaccess нишевый редирект
цитата
16/08/12 в 20:54
 theman
промучавшись 5 часов самостоятельно решил таки спросить у здравомыслящих людей.

что надо сделать.

на сайте есть много нишевых страниц
http://www.domain.com/index.php?page=niche1
http://www.domain.com/index.php?page=niche2
http://www.domain.com/index.php?page=niche3
и так далее
люди попадают на сайт по такому адресу
http://www.domain.com/index.php
или
http://www.domain.com/

хочу проанализировать реферер на наличие в нём слов niche1 или niche2 или niche2 и перенаправить юзера на соответствующую нишевую страничку.

вроде должно было сто раз обсуждаться, но не нашёл конкретного ответа на вопрос.

сам что то комбинировал mor_rewrite'ом, но так желаемого результата и не получил.

подскажите плз люди добрые icon_smile.gif
цитата
16/08/12 в 21:42
 Lexikon
а может это проще с помощью пхп сделать?
да и если что то пробовал код пости сюда, тут специалисты хорошие, подскажут что не так делал.

И кстати вопрос не совсем понятен.
Если серфер приходит по прямому адресу на индекс,
http://www.domain.com/index.php
или
http://www.domain.com/
что там анализировать.
Единственное можно проанализировать есть ли тот или иной нишевый кей в домене реферала.

А если конечно по ссылке вида:
http://www.domain.com/index.php?page=niche1
то всё же проще с помощью пхп

Или я не прав, поправьте меня.
цитата
16/08/12 в 22:00
 Nux
ну если тебе именно на наличие в рефе то самый простой вариант будет например таким


RewriteEngine On
RewriteCond %{HTTP_REFERER} .*niche1.* [NC]
RewriteRule .* http://www.google.com [R=301,L]

RewriteCond %{HTTP_REFERER} .*niche2.* [NC]
RewriteRule .* http://www.google.com [R=301,L]

итп

хотя лучше и правильнее в твоем случае по параметру.

* вложить все можно в один RewriteCond через |
* редирект 301 нужен или нет сам определяй, статус можно любой поставить.
цитата
17/08/12 в 12:55
 theman
Lexikon, надо да, в зависимости от HTTP_REFERER редиректить юзера на определённую пагу. то есть пришёл человек с ресурса, в урле которого было слово

niche1

его надо отправить на страницу

http://www.domain.com/index.php?niche=niche1

и так далее.

при этом все пользователи приходят ко мне на
http://www.domain.com/

вот что пробовал делать

RewriteCond %{HTTP_REFERER} ^http://(.*)niche1 [NC]
RewriteCond %{REQUEST_URI} !index.php(.*)$
RewriteRule .* http://www.domain.com/index.php?niche=niche1 [R,L]

чёт не пашет :)

без
RewriteCond %{REQUEST_URI} !index.php(.*)$
происходит зацикливание редиректа

Оффтопик: ну и да, вот полчаса назад подумал, что нафиг в принципе редирект, всё то же самое можно по идее сделать в пхп и просто инклюдить нужную морду.

но тем не менее с редиректом хотелось бы разобраться
цитата
17/08/12 в 14:40
 Yacc
Код:
RewriteEngine on
RewriteCond %{HTTP_REFERER} keyword1 [NC]
RewriteRule ^index.php$ index.php?niche=keyword1 [QSA,L]
RewriteCond %{HTTP_REFERER} keyword2 [NC]
RewriteRule ^index.php$ index.php?niche=keyword2 [QSA,L]
#etc
цитата
17/08/12 в 17:35
 theman
Yacc, а если трафик будет идти не на
http://www.domain.com/index.php
а на
http://www.domain.com/

?

твой вариант у меня не хочет работать именно потому, видимо, что трафф идёт на http://www.domain.com/
цитата
17/08/12 в 17:42
 Yacc
Код:
#...
RewriteRule ^$ index.php?niche=keyword2 [QSA,L]

icon_smile.gif
цитата
17/08/12 в 17:56
 theman
пробую так (не все три инструкции одновременно ессно)
RewriteRule ^$ index.php?niche=keyword2 [QSA,L]
RewriteRule ^/$ index.php?niche=keyword2 [QSA,L]
RewriteRule ^(.*)$ index.php?niche=keyword2 [QSA,L]

не пашет
где глюк? (сервер апач)
цитата
17/08/12 в 18:18
 Yacc
Весь .htaccess покажи.

theman писал:
RewriteRule ^$ index.php?niche=keyword2 [QSA,L]

Должно работать даже с index.php. Надеюсь mod_rewrite включен вообще. icon_smile.gif

theman писал:
RewriteRule ^/$ index.php?niche=keyword2 [QSA,L]

Строка переданная в RewriteRule никогда не начинается со слэша.

theman писал:
RewriteRule ^(.*)$ index.php?niche=keyword2 [QSA,L]

Это должно редиректить весь траф, а не только идущий на морду.

theman писал:
не пашет

Как организован редирект в скрипте?

Убедись что параметры передаются скрипту: вставь в начало index.php

Код:
echo $_SERVER['QUERY_STRING'];
цитата
17/08/12 в 19:01
 theman
вот, нашёл таки вариант рабочий

RewriteCond %{HTTP_REFERER} ^http://(.*)keyword [NC]
RewriteRule ^$ /niches.php?tag=keyword [R,L]

спасибо, Yacc ;)

а как исключить редирект для заходов с се?

так будет работать

RewriteCond %{HTTP_REFERER} !^(.*)google [NC]

?
цитата
17/08/12 в 19:36
 Yacc
Будет, но это клоакинг чистой воды. icon_smile.gif


Эта страница в полной версии