go.php - header или meta http-equiv???

general

Новичок
Подскажите, какой способ надежнее для редиректа ссылок типа http://site1.com/go.php?url=http://site2.com



header("Location: $url");

или

<html><head><meta http-equiv=\"refresh\" content=\"0;url=$url\"></head></html>


Извините за, может быть, чайницкий вопрос. Но не нашел какого-то определенного ответа. Каковы плюсы и минусы того или иного способа. Можно ли сказать, что header надежнее?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
header не сработает, если до него ты выведешь что-то в output. Мета как мне кажется в этом контексте попрямее, хотя пусть меня поправят.
 

A1x

Новичок
header правильнее потому что http-equiv это по сути эмуляция хедера через хтмл

header не сработает, если до него ты выведешь что-то в output.
а зачем до него что-то выводить?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
header правильнее потому что http-equiv это по сути эмуляция хедера через хтмл


а зачем до него что-то выводить?
Вдруг еррор выползер или еще дрянь какая, я указан на недостаток метода, блин))), а не предлагал выводить данные.
 

weregod

unserializer
header() надёжнее, если нужно перенаправить и поисковых ботов
js location.href надёжнее, если нужно перенаправить реальных посетителей
 

Royal Flash

-=MaestrO=-
Если бы автор темы подробнее описал для чего ему нужна эта переадресация, то можно было бы предположить, что надежнее, а что нет.
 

Alex B

Новичок
Вот именно, с задачи надо начинать

оба методы хороши, и недостатки тут не при чем, точнее - а есть ли они :)

если надо перенаправить браузер, поисковый робот - header("Location: ....") - и только так
если надо перенаправить юзера - оба, header("Location: ....") - смотря какой случай, если юзеру не стоит видеть перенаправление, или даже о нем подозревать
ежели ему надо сообщить - упс, больше линк этот не работает и мы вас сейчас отправим на другую страницу, или при этом отгрузить ему блок рекламы - то этот метод наиболее подходящий <meta http-equiv=
 

Фанат

oncle terrible
Команда форума
header и надежнее и прямее.

Рассуждения про "а вдруг чего" сродни рассуждениям "а вдруг пхп на сервере нету. делайте сайт в html". А еще лучше на бумаге писать - вдруг электричество отключат.
 

A1x

Новичок
Ага, действительно в RFC этого заголовка нет, но это расширение поддерживаемое большинством браузеров
http://en.wikipedia.org/wiki/URL_redirection#Refresh_Meta_tag_and_HTTP_refresh_header
впрочем w3c говорит что рефреш это плохо http://www.w3.org/QA/Tips/reback

header прямее - есть протокол HTTP и есть контент (хтмл, джаваскрипт) который гоняется поверх этого протокола
если что-то можно сделать средствами самого протокола (header) то это "прямее" чем включать некие инструкции в контент (http-equiv, javascript)
 

tz-lom

Продвинутый новичок
самый лучьший метод:
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<script language="JavaScript1.1" type="text/javascript">
<!--
location.replace("http://форум"); // текущая страница будет заменена в history на новую — важно в плане юзабилити
//-->
</script>
<noscript>
<meta http-equiv="Refresh" content="0; URL=http://форум"> <!-- для тех нескольких процентов «сёрферов», которые отключили JavaScript -->
</noscript>
<title>Форум</title>
</head>
<body>
Форум расположен <a href="http://форум">ЗДЕСЬ</a>.
</body>
</html>
ну и заголовок в комплекте конечно
 

флоппик

promotor fidei
Команда форума
Партнер клуба
А. Я уже спорил об этом.
Это разные вещи. В конкретном примере хэдер правильнее, просто потому что в контексте HTML документа «редирект» - это бред. А в контексте HTTP - нет.
Задание же кодировки и типа содержимого, например, не имеет более правильного варианта реализации, так как существует в обоих контекстах одновременно, и как сообщение сервера клиенту по протоколу HTTP, и как свойство полученного документа (который можно сохранять на диск, и носить на флешке)
 

iceman

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

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
произошла ошибка - вывести сообщение об ошибке - правильно
хочешь переадресовать пользователя - хеадер
делать это хтмл-ом - это лишний вывод и не нужная задача
Какждый дроч..т как он хочет, золотое правило. На файлообменниках часто идет редирект с счетчиком секунд, которые остались до редиректа на урл файла, его хедером как сделать?
 

iceman

говнокодер
это совсем другая задача, там счетчик - элемент интерфейса, и делать это на js...
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Угу, речь о том, что каждой задаче свой инструмент.
 

Вурдалак

Продвинутый новичок
Задание же кодировки и типа содержимого, например, не имеет более правильного варианта реализации
— указание кодировки в meta-тегах — ночной кошмар консистентности данных. Надо признать, что это просто вынужденный костыль для тех, кому необходимо HTML-файлы по флешкам таскать.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
— указание кодировки в meta-тегах — ночной кошмар консистентности данных
Я повторюсь. То что по HTTP чаще всего гоняется HTML, и то что существовали проблемы с кодировками на уровне сервера на постсоветской территории (ночные кошмары типа «русского апача») никак не связано с тем фактом, что это в принципе разные вещи.
Консистенстность не входит не в какие конфликты с идеей существования разных кодировок и типов контента. Заголовок является свойством ответа веб-сервера на URL, мета-тег принадлежит HTML-документу. Который вообще никогда может не отдаваться веб-сервером в своей жизни.
 

Вурдалак

Продвинутый новичок
Кодировка документа должна указываться не в его теле, а в заголовках. В случае с HTML возникает неопределённость с <title>, некоторыми meta (keywords, description) etc. Поэтому более правильным будет указывать кодировку в заголовках (HTTP или каких-то других) и не использовать HTML-файлы напрямую.
 
Сверху