Nod*_*ode 24 rewrite proxy html apache-2.2
我有一个Apache web server提供静态 HTML 页面的工具。出于某种原因,我无法更改文件本身,但我仍然想将一些 HTML 注入到正在提供服务的每个页面中。
这可能mod_proxy吗?如果没有,有人可以推荐提供这种功能的软件吗?
编辑:我必须插入某种横幅广告(例如 a javascript)和跟踪像素。
Mer*_*erc 20
我不确定为什么答案列表中没有提到这一点。对不起,如果我花了两年时间才看到这个问题......
做您想做的事情的最简单、最强大的方法是使用Apache 过滤器。
只要有:
ExtFilterDefine css_changer mode=output intype=text/html cmd="/some/php/script.php"
SetOutputFilter css_changer
Run Code Online (Sandbox Code Playgroud)
一个可能的脚本:
#!/usr/bin/php
<?
#phpinfo(); // Uncomment to see ALL env variables
$host = $_ENV["HTTP_HOST"]; // www.site.com
$script_name = $_ENV["SCRIPT_NAME"]; // /theme/green/style.css
$pi = pathinfo($script_name);
$type = $pi['extension'];
#print "$host $script $type";
$stdin = STDIN;
while($line = fgets($stdin)){
$line = preg_replace('/a/', 'A', $line);
fwrite(STDOUT, $line);
}
fclose(STDOUT);
?>
Run Code Online (Sandbox Code Playgroud)
这会将所有 "a" 更改为 "A" 。
确保在您的 httpd.conf 中启用过滤器,如下所示:
LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
Run Code Online (Sandbox Code Playgroud)
这个问题在谷歌排名确实靠前,而且在论坛方面并不多
Tom*_*lak 18
您可以这样做:使用 mod_rewrite 更改来自
/some/static/page.html
Run Code Online (Sandbox Code Playgroud)
到
/htmlinjector.php?url=/some/static/page.html
Run Code Online (Sandbox Code Playgroud)
然后使用 PHP(或任何你认为合适的)来进行文件操作。添加输出缓存以提高性能。
作为替代方案,Apache 处理程序听起来很有帮助:
使用 CGI 脚本修改静态内容
以下指令将导致对带有
html扩展名的文件的请求触发footer.plCGI 脚本的启动 。Run Code Online (Sandbox Code Playgroud)Action add-footer /cgi-bin/footer.pl AddHandler add-footer .html然后 CGI 脚本负责发送最初请求的文档(由
PATH_TRANSLATED环境变量指向 )并进行任何需要的修改或添加。
这或多或少是 mod_rewrite 方法会做的,只是减少了黑客。
这是有关如何使用mod_proxy_html编辑网页上的链接(内容)的教程。您也许可以应用此修改您想要的 html。
更新:你确定要走这条路吗?我认为 Apache 旨在提供内容,而不是创建内容。这可能会出现在 MVC 框架的视图部分。我不推荐这样做的原因是你打破了模块化规则。您的 Web 应用程序将与为其提供服务的应用程序交织在一起,使未来的升级、移动等复杂化。
| 归档时间: |
|
| 查看次数: |
47098 次 |
| 最近记录: |