gpt4 book ai didi

php - VirtualHost 模块在交付给客户之前搜索和替换 HTML 网站代码

转载 作者:太空宇宙 更新时间:2023-11-04 12:45:10 25 4
gpt4 key购买 nike

我想在 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_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

关于php - VirtualHost 模块在交付给客户之前搜索和替换 HTML 网站代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com