我想将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的解决方案,它看起来非常强大:
启用Apache模块:
a2enmod ext_filter
在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
-该指令激活过滤器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 ); ?>
重新启动Apache:
service apache2 restart
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句