Редиректы

Сегодня поговорим о наболевшем - редиректах. Редирект - это скрипт который принудительно отправляет пользователя на c одной страницы на другую.

Редиректы можно классифицировать по способу или методу пере направления. Существует несколько видов редиректа:

Редирект по рефереру через htaccess

RewriteEngine On
RewriteCond %{HTTP_REFERER} .*google.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*aol.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*msn.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*yahoo.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*yandex.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*rambler.*$ [NC,OR]
RewriteCond %{HTTP_REFERER} .*ya.*$ [NC]
RewriteRule .* http://site.com [R,L]

Пере направление (редирект) срабатывает в том случает если посетитель заходит с поисковиков google aol msn altavista ask yahoo.

Редирект по refferer на фид

RewriteEngine On
RewriteCond %{HTTP_REFERER} google.*[\?&]q=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteCond %{HTTP_REFERER} msn.*[\?&]q=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteCond %{HTTP_REFERER} live.*[\?&]q=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteCond %{HTTP_REFERER} altavista.*[\?&]q=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteCond %{HTTP_REFERER} ask.*[\?&]q=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteCond %{HTTP_REFERER} yahoo.*[\?&]p=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteCond %{HTTP_REFERER} aol.*[\?&]query=([^&]+)
RewriteRule ^.*$ http://site.com/search.php?q=%1 [NC,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Такой вид редиректа часто используется дорвейщиками для перенаправления целевого посетителя на фид (feed) по нужному кею.

htaccess 404 redirect

RewriteEngine On
ErrorDocument 404 /errors/404.php

404 редирект - это редирект при 404 ошибке, тоисть когда страница не существует (страница не найдена).

Таким же способом можно перенаправить посетителя на другой сайт вписав вместо /errors/404.php адрес сайта:


RewriteEngine On
ErrorDocument 404 http://google.com

Редирект через java script

<script>document.location.href="http://site.com";</script>

Самый простой и самый распространенный вид редиректа на с сайтов где нету поддержки php или htaccess. Также часто возникает потребность в редиректе по кейворду с поисковика на фид через java script. Вот собственно реализация:

function referrer_keyword_parser() {
var patterns =
[
[ /^http:\/\/([a-z]+\.)?google\.(co\.)?[a-z]+/, /q=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?yahoo\.(co\.)?[a-z]+/, /p=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?search\.msn\.(co\.)?[a-z]+/, /q=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?search\.live\.(co\.)?[a-z]+/, /q=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?search\.aol\.(co\.)?[a-z]+/, /q=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?search\.ask\.[a-z]+/, /q=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?search\.lycos\.(co\.)?[a-z]+/, /query=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?digg\.com/, /s=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?rambler\.[a-z]+/, /query=([^&]+)/ ],
[ /^http:\/\/([a-z]+\.)?yandex\.[a-z]+/, /text=([^&]+)/ ]
];

var p;
for ( var k in patterns) {
p = patterns[k]
if (document.referrer.match(p[0])) {
var m = document.referrer.match(p[1]);
if (m.length)
return m[1];
else
break;
}
}
return escape(document.title);
}
document.location.href="http://site.com/feed.php?id=1234&q="+referrer_keyword_parser();
</script>

Редирект через php header

<?php header('Location: http://www.example.com/'); ?>

Стоит заметить что код нужно вписывать в начало php скрипта потому как заголовки всегда отправляются первыми.

HTML meta redirect

Простейший редирект через html мета теги. Пример:

<meta equiv="Refresh" content="0; URL=http://www.new.site/page.html">

Многие о таком способе забыли но именно комбинация такого вида с java script редиректами дает отличный результат.

Клик редирект

Это вид редиректов через клик. Используется в дорвеях. Суть его в том что в самом верху дорвея пишется надпись "сайт переехал" или "перейти на страницу сайта" + ссылка на новый адрес. Такой вид редиректа позволяет дорвеям долгое время оставаться в выдаче. Пример:

<html>
<body>
<center>
<h1>САЙТ ПЕРЕЕХАЛ НА НОВЫЙ АДРЕС</h1>
<h1><a href="http://site.com/">http://site.com</a></h1>
</center>
<br><br><br><br><br><br><br><br><br>
</body>
</html>

1 коммент.:

Мак комментирует...

если я хочу сделать Редирект по refferer на фид
но у меня на этом ресурсе дор который я хочу сливать на шоп ? можно ли как то сделать редирект всего кроме того что в отдельной папке (той где дор)

Отправить комментарий