PHP 代码取决于服务器响应

PHP code depending on server response

我想根据我们服务器对特定页面的 HTTP 响应加载特定 Google 分析跟踪代码。如果页面正常(HTTP 响应为 200),代码应为:

 <script>
   (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
   (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
   m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
   })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
   ga('create', 'UA-XXXXXXXX-X', 'auto');
   ga('set', 'forceSSL', true);
   ga('require', 'displayfeatures');
   ga('send','pageview');
 </script>

但是如果 HTTP 响应是 404 或 410(未找到页面),我希望代码为:

 <script>
   (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
   (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
   m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
   })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
   ga('create', 'UA-XXXXXXXX-X', 'auto');
   ga('set', 'forceSSL', true);
   ga('require', 'displayfeatures');
   ga('send','pageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer);
 </script>

注意倒数第二行的区别。

此代码保存在我们的 header.php 文件中(我们使用的是 Wordpress),该文件适用于所有页面,包括 404 页面。为了让系统为 404 页面加载不同的代码,我是这样做的:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'UA-XXXXXXXX-X', 'auto');
  ga('set', 'forceSSL', true);
  ga('require', 'displayfeatures');
  ga(
<?php
$HTTPStatus = $_SERVER["REDIRECT_STATUS"];
if ($HTTPStatus==404) ['send','pageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer];)
elseif ($HTTPStatus==410) ['send','pageview','/404.html?page=' + document.location.pathname + document.location.search + '&from=' + document.referrer];)
else ['send','pageview'];)
?>
</script>

我是这方面的新手,似乎不太了解。我究竟做错了什么?我把它放在 header.php 上(就在 </head> 之前)是否合适?任何反馈将不胜感激。

我认为这是个好主意。

按照以下步骤操作

1.Create 404 页面,喜欢 404.php

2.Create 新 header 喜欢,header-nofound.php,

3.In 你的 404.php,用 header 作为 <?php get_header('nofound'); ?>

4.In你的header-nofound.php,404的情况下可以放你要的ga码,

Thanks.this 可能对您有帮助