В этой статье я собрал воедино способы перенаправления (редиректа) браузера или просто http-запросов. Если что-то было упущено — пишите комментарием, и я дополню обзор.
Загрузить страницу в окне можно следующими способами:
Редирект на javascript подействует на браузер обычного пользователя (если включен js), но не на поискового робота. Этот факт используется при создании дорвеев.
Еще один способ перенаправления с помощью javascript - сабмит пустой формы: создается специальная форма с урлом назначения в параметре action и в требуемый момент эмулируется submit.
301-редирект на asp.net:
<script runat="server">
private void Page_Load(object sender, System.EventArgs e) {
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://alt-f4.ru");
}
</script>
301-редирект с помощью coldfusion:
<.cfheader statuscode="301" statustext="Moved permanently"> <.cfheader name="Location" value="http://alt-f4.ru">
<meta http-equiv="refresh" content="1; url=http://alt-f4.ru">
Здесь 1 - время задержки в секундах. Стоит осмотрительно использовать этот способ, так как он "пользуется успехом" у спамеров - соответственно может наказываться поисковыми системами.
301-редирект с помощью asp:
<%@ Language=VBScript %> <% Response.Status="301 Moved Permanently" Response.AddHeader "Location", "http://alt-f4.ru" response.end %>
Переадресация на php реализуется с помощью функции header, отсылающей заголовки:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://alt-f4.ru");
exit();
?>
Ниже представлен вариант 301-переадресации с сохранением запрашиваемой страницы и get-параметров:
<?php
$str=$_SERVER['QUERY_STRING'];
if ($str!='') $str='?'.$str;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://alt-f4.ru/'.$str);
exit();
?>
Следующая строки определяют, что все запросы, кроме запросов к файлам с расширениями .gif и .jpg, будут перенаправлены на файл index.php
RewriteEngine On RewriteRule !.(gif|jpg)$ index.php
Если посетитель имеет IP-адрес 192.168.11.1, то ему будет открыта страница data.html:
SetEnvIf REMOTE_ADDR 192.168.11.1 REDIR="redir"
RewriteCond %{REDIR} redir
RewriteRule ^/$ /data.html
Удаление префикса «www.» из адреса - перенаправление с http://www.alt-f4.ru на http://alt-f4.ru:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.alt-f4.ru$ [NC]
RewriteRule (.*) http://alt-f4.ru/$1 [R=301]
Перенаправление всех запросов на другой адрес:
redirect / http://alt-f4.ru
Переадресация при запросе определённых страниц:
redirect /pages http://alt-f4.ru/pages redirect /forum http://forum.alt-f4.ru
или:
redirect 301 / http://alt-f4.ru
Чтобы перенаправить только одну страницу, сохранив PR старой:
redirect 301 /old-page.html http://alt-f4.ur/new-page.html
Комментарии
location="http://alt-f4.ru";
document.location.href="http://alt-f4.ru";
window.location.reload("http://alt-f4.ru");
document.location.replace("http://alt-f4.ru");
скажите, это актуально ещё? этот редирект все ещё не действует на поискового робота?
Нет. Естественно, не действует. Но, если робот увидит такой скрипт (а он увидит - по кр. мере гугл) - сайт получит некоторый минус.
удобно использовать
location="http://alt-f4.ru";
document.location.href="http://alt-f4.ru";
window.location.load("http://alt-f4.ru"); // не reload!!!
document.location.replace("http://alt-f4.ru");
для предотвращения дублирования отправки данных методом POST
Тем более, если оформить в функцию
как на .net редиректить ТЕХ КТО ПРИШОЛ ПО ОПРЕДЕЛЁННОМУ ИМЕНИ? например тех КТО пришли по hope.sait.ru а нужно перенаправить на main.sait.ru/hope
а тех кто на main.sait.ru оставить на месте.
А КАК СДЕЛАТЬ ЧТОБЫ ОН ОТПРАВЛЯЛ НЕ НА ALT-F4 А НА МОЙ САЙТ????
А возможно сделать редирект по какому-то действию пользователя?
Отправить комментарий