PHP中等同于ASP.NET HttpModules的功能模块

5
什么是ASP.NET HttpModules在PHP中的等价物?
如果有的话,我该如何将它们包含到特定应用程序中(而不是全局)?换句话说,web.config的等价物是什么?
例如:无论运行的代码如何,如果服务器返回HTTP 500错误,我需要记录请求和标头。
在ASP.NET中,我可以使用HTTP模块获取响应代码和其他细节,然后发送给客户端之前。我还可以处理开始请求。
我需要在PHP中找到类似的东西。
2个回答

3

很遗憾,PHP更像ASP,因为“应用程序”是一个宽泛的概念,文件之间没有紧密的联系,所以你做的任何事情可能都需要在Web服务器级别进行。

假设你在一个Linux/Apache服务器上。一种方法是使用.htaccess,这些可以在目录(即应用程序级别)上进行修改,并具有强大的功能。

其中一个例子是用于URL重写:

http://roshanbh.com.np/2008/02/hide-php-url-rewriting-htaccess.html

官方Apache文档:http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

@brendan - 如果我理解得没错,URL重写类似于路由。我正在寻找一种在处理到达目录中存在的PHP页面之前执行我的代码的方法。 - Ramesh
gotcha - 我假设你正在使用HTTP模块来重写URL(一个常见的任务),你可以使用修改过的.htaccess文件来实现我的答案。 - brendan

0

您可以查看适用于Apache的ModSecurity:http://www.modsecurity.org/

它将允许您根据定义的规则记录完整的POST和标头数据。 ModSecurity配置非常强大,但也非常复杂。

HTTP流量日志记录

Web服务器通常具备记录流量以进行营销分析的功能,但无法记录流向Web应用程序的流量。特别是,大多数服务器无法记录请求正文。您的对手知道这一点,这就是为什么大多数攻击现在通过POST请求进行,使您的系统失去了监控能力。ModSecurity使完整的HTTP事务日志记录成为可能,允许记录完整的请求和响应。其日志记录设施还允许精细决策,确保仅记录相关数据。由于某些请求和/或响应可能包含某些字段中的敏感数据,因此可以配置ModSecurity在写入审核日志之前屏蔽这些字段。


@Julien - 感谢提供链接。但那只是一个例子。我想要的是一种处理进入目录的所有请求的BeginRequest和EndRequest的方法。 - Ramesh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接