VirtualHost模块,用于在交付给客户端之前搜索和替换HTML网站代码

蓝标

我想将VirtualHost</body>元素替换为:

<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//stats.mydomain.com/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '1']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<noscript><p><img src="//stats.mydomain.com/piwik.php?idsite=1" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code --></body>

我需要在VirtualHost部分中执行此操作,因为我无法直接修改网站代码。

我在考虑一些Apache模块,例如mod_substitute,mod_sed,mod_include。

我需要将此PIWIK统计信息代码添加到每个页面中。

这是好方法吗?这个mod中的哪一个最适合这样做?也许还有另一种解决方案?

蓝标

下面是使用mod_ext_filter的解决方案,它看起来非常强大:

  1. 启用Apache模块:

    a2enmod ext_filter
    
  2. 在Apache配置文件中的VirtualHost部分中,添加过滤器定义:

    ExtFilterDefine my_html_filter mode=output intype=text/html cmd="/usr/bin/php5 /var/www/data/myfilter.php"
    SetOutputFilter my_html_filter
    
    • ExtFilterDefine -此指令定义过滤器
    • my_html_filter -这是我们的过滤器名称
    • mode=output -告诉Apache处理响应
    • intype=text/html -指定应过滤的文档的MIME类型
    • cmd="/usr/bin/php5 /var/www/data/myfilter.php" -指定要运行的外部命令
    • SetOutputFilter -该指令激活过滤器
  3. PHP文件内容/var/www/data/myfilter.php

    <?php
    
    $stdin = fopen('php://stdin', 'r');
    while($line = fgets($stdin)){
     $line = str_replace('</body>',"
    <!-- Piwik -->
    <script type='text/javascript'>
      var _paq = _paq || [];
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u='//stats.mydomain.com/';
        _paq.push(['setTrackerUrl', u+'piwik.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    <noscript><p><img src='//stats.mydomain.com/piwik.php?idsite=1' style='border:0;' alt='' /></p></noscript>
    <!-- End Piwik Code -->
    </body>", $line);
    
     echo $line;
    }
    fclose( $stdin );
    
    ?>
    
  4. 重新启动Apache:

    service apache2 restart
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有一种简单的方法可以远程管理交付给客户端的设备?

来自分类Dev

将Channels与SignalR服务器到客户端流一起使用时,是否可以保证将服务器端Complete交付给客户端?

来自分类Dev

将Channels与SignalR服务器到客户端流一起使用时,是否可以保证将服务器端Complete交付给客户端?

来自分类Dev

Python zipfile未交付给用户

来自分类Dev

未将Python zipfile交付给用户

来自分类Dev

如何显示已成功交付给客户/用户的每种产品的账单地址

来自分类Dev

APN未交付给Ad-Hoc版本

来自分类Dev

Foursquare“缺少访问凭证”,用于使用客户端ID和客户端密钥进行场所搜索

来自分类Dev

将使用MSYS2和MingW构建的程序交付给最终用户的正确方法是什么?

来自分类Dev

为Cordova和网站的流星应用程序使用不同的客户端代码库

来自分类Dev

为cordova和网站的流星应用程序使用不同的客户端代码库

来自分类Dev

用于node.js的hazelcast客户端模块

来自分类Dev

用于node.js的hazelcast客户端模块

来自分类Dev

适用于PHP的oAuth客户端模块

来自分类Dev

如何在客户端代码中使用节点模块?

来自分类Dev

IIS模块和C#:在将页面内容发送到客户端之前如何对其进行修改

来自分类Dev

RESTeasy客户端代码,用于附加文件

来自分类Dev

Twitter typeahead.js远程和客户端搜索

来自分类Dev

Twitter typeahead.js远程和客户端搜索

来自分类Dev

Java客户端和浏览器客户端之间的响应代码变化

来自分类Dev

Clickatell显示已交付给网关,但是未使用Java接收到SMS吗?

来自分类Dev

可变2D阵列交付给可变数量的节点

来自分类Dev

用于Visual Studio 2010的lightswitch html客户端

来自分类Dev

用于X11 ssh转发的HTML客户端?

来自分类Dev

Scala中的同步和异步客户端代码

来自分类Dev

在NPM上捆绑和发布客户端Web代码

来自分类Dev

如果我锁定并废弃了clearcase活动,那么如果执行交付命令,它们是否会交付给父流?

来自分类Dev

分离客户端和服务器端部署JavaEE和网站开发

来自分类Dev

ajax登录到网站客户端

Related 相关文章

  1. 1

    有没有一种简单的方法可以远程管理交付给客户端的设备?

  2. 2

    将Channels与SignalR服务器到客户端流一起使用时,是否可以保证将服务器端Complete交付给客户端?

  3. 3

    将Channels与SignalR服务器到客户端流一起使用时,是否可以保证将服务器端Complete交付给客户端?

  4. 4

    Python zipfile未交付给用户

  5. 5

    未将Python zipfile交付给用户

  6. 6

    如何显示已成功交付给客户/用户的每种产品的账单地址

  7. 7

    APN未交付给Ad-Hoc版本

  8. 8

    Foursquare“缺少访问凭证”,用于使用客户端ID和客户端密钥进行场所搜索

  9. 9

    将使用MSYS2和MingW构建的程序交付给最终用户的正确方法是什么?

  10. 10

    为Cordova和网站的流星应用程序使用不同的客户端代码库

  11. 11

    为cordova和网站的流星应用程序使用不同的客户端代码库

  12. 12

    用于node.js的hazelcast客户端模块

  13. 13

    用于node.js的hazelcast客户端模块

  14. 14

    适用于PHP的oAuth客户端模块

  15. 15

    如何在客户端代码中使用节点模块?

  16. 16

    IIS模块和C#:在将页面内容发送到客户端之前如何对其进行修改

  17. 17

    RESTeasy客户端代码,用于附加文件

  18. 18

    Twitter typeahead.js远程和客户端搜索

  19. 19

    Twitter typeahead.js远程和客户端搜索

  20. 20

    Java客户端和浏览器客户端之间的响应代码变化

  21. 21

    Clickatell显示已交付给网关,但是未使用Java接收到SMS吗?

  22. 22

    可变2D阵列交付给可变数量的节点

  23. 23

    用于Visual Studio 2010的lightswitch html客户端

  24. 24

    用于X11 ssh转发的HTML客户端?

  25. 25

    Scala中的同步和异步客户端代码

  26. 26

    在NPM上捆绑和发布客户端Web代码

  27. 27

    如果我锁定并废弃了clearcase活动,那么如果执行交付命令,它们是否会交付给父流?

  28. 28

    分离客户端和服务器端部署JavaEE和网站开发

  29. 29

    ajax登录到网站客户端

热门标签

归档