Итак, я знаю общее правило: после перенаправления заголовка в PHP вы должны вызывать exit (), чтобы избежать запуска дополнительного кода, но я хочу знать, поместите ли вы код после заголовка перенаправления, если он будет всегда бегать?
Я изучал различные способы отслеживания рефералов в Google Analytics и наткнулся на этот пост: Советы и рекомендации Google Analytics - Отслеживание 301 переадресации в Google Analytics
Он рекомендует сделать что-то вроде этого:
<?
Header( “HTTP/1.1 301 Moved Permanently” );
Header( “Location: http://www.new-url.com” );
?>
<script type=”text/javascript”>
var gaJsHost = ((“https:” == document.location.protocol) ? “https://ssl.” : “http://www.”);
document.write(unescape(“%3Cscript src=’” + gaJsHost + “google-analytics.com/ga.js’ type=’text/javascript’%3E%3C/script%3E”));
</script>
<script type=”text/javascript”>
try {
var pageTracker = _gat._getTracker(“UA-YOURPROFILE-ID”);
pageTracker._trackPageview();
} catch(err) {}</script>
Из того, как я всегда понимал функцию header (), дело за браузером, и он может запускать перенаправление в любое время.Таким образом, нет никакой гарантии, что JavaScript будет фактически начинаться или заканчиваться до того, как произойдет перенаправление.
Документация PHP для функции header () указывает причину выхода после перенаправления в том, чтобы "убедиться, что приведенный ниже код не выполняется, когда мы перенаправляем".Это не похоже на то, что они гарантируют, что весь следующий код будет работать, просто это может произойти.
Несмотря на это, я нашел другой способ на самом деле управлять отслеживанием, но я хотел посмотреть, смогу ли я узнать, как именно работает header () в этой ситуации ..
Спасибо за вашу помощь.