301 redrect для 404.html

V
На сайте с 03.05.2007
Offline
66
888

запарился уже... Как правильно прописать жаваскриптовый редирект для 404.html?

У меня раньше было так в коде 404.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<title>
<head>

<script language="JavaScript1.1" type="text/javascript">
<!--
location.replace("http://www.mysite.com/"); // текущая страница будет заменена в history на новую — важно в плане юзабилити
//-->
</script>
<noscript>
<meta http-equiv="Refresh" content="0; URL=http://www.mysite.com/">
</noscript>
</head>
<body>
У нас <a href="http://www.mysite.com/">новый сайт</a>.
</body>
</html>
<!--
-->

А как сделать чтобы перенаправляло через 301?

Я нашел javascript код для 301 редиректа, но как его вставить не соображу:

function PermanentRedirect(strDestinationUri) {

Response.Clear();
Response.Status = 301;
Response.AddHeader("Location", strDestinationUri);
Response.Flush();
Response.End();
}

NOTE

“strDestinationUri” should be an absolute URI for maximum client compatibility. The function assumes that “Response.Buffer = true;” has been set at some point prior to invoking the function and will error if hasn't (this is the default configuration for IIS5 and above).

T
На сайте с 11.08.2005
Offline
181
#1

301 (СЕРВЕРНЫЙ) редирект по определению не может реализовываться при помощи JavaScript.

Реализация на PHP (код вставляется в самом начале страницы, до вывода чего-либо на страницу)


<?
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.new-url.com/");
exit();
?>
G3
На сайте с 09.08.2007
Offline
2
#2

imho, вместо

location.replace("http://www.mysite.com/"); 

просто пишешь

Response.Clear();

Response.Status = 301;
Response.AddHeader("Location", "http://www.mysite.com/");
Response.Flush();
Response.End();

или выделяешь в функу, как в примере - дело вкуса ;)

nothing here
V
На сайте с 03.05.2007
Offline
66
#3

Спасибо за ответы, буду экспериментировать:)

Елистратов
На сайте с 21.04.2007
Offline
229
#4
violli:
Спасибо за ответы, буду экспериментировать:)

Я так понял Вы хотите вывести сообщение о том, что сайт переехал на новый адрес и автоматически переправить его на новый адрес...то вот еще попробуйте javascript...

<script type="text/javascript">

<!-- # face
function vorwaerts() {
face.pre("enhance");
}
setTimeout('top.location.href = "сайт на который автоматически перенаправляем поситителя"',2000);

onload = vorwaerts;

//-->
</script>
C уважением, Евгений. Покупаю аккаунты AdSense ()
T
На сайте с 11.07.2007
Offline
43
#5
g213:
imho, вместо

Код:
location.replace("http://www.mysite.com/");просто пишешь

Код:
Response.Clear();
Response.Status = 301;
Response.AddHeader("Location", "http://www.mysite.com/");
Response.Flush();
Response.End();или выделяешь в функу, как в примере - дело вкуса

То есть значит вместо яваскрипта пишем аспшный код? мило, мило...

Яваскриптом 301 сделать нельзя, это серверный ответ, яваскрипт исполняется в браузере.

violli:
Я нашел javascript код для 301 редиректа, но как его вставить не соображу:

- это пример asp функции, которая должна быть выполнена до любого другогг вывода. Соответственно она вставляется в asp файл. У вас наверно всетаки не вин хостинг, используйте php как было показано выше, или же напишите правило для мод_рерайта. А насамом деле 404 должно отдавть именно 404 и ничто другое.... т.е. не кидать например на морду, а сообщить что файл не найден и дать инфу где его найти.

V
На сайте с 03.05.2007
Offline
66
#6

Здесь специфическая задача, на уровне эксперимента, просто возможно ли вообще так сделать, что бы при обращении к 404.shtml преребрасывало на главную 301 редиректом?

Пробовал пхп код вставить в шапке страницы, но показывается сама страница, не редиректится.

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