PHP中的HttpHandler和ASP.Net中的一样吗

PHP中的HttpHandler和ASP.Net中的一样吗,php,asp.net,httphandler,Php,Asp.net,Httphandler,在ASP.Net中,我们有HttpHandler,它可以解析请求并相应地重定向用户,主要用于url重写等 我想知道我们在PHP中是否也有这样的功能,如果有,一个解释它的示例将非常有用 例如,如果我在某个服务器上请求一个图像文件,如果来自服务器x的请求提供了类似的功能,我想将其重定向到某个页面。如果要在php中重定向,可以直接设置头 eg header('Location: http://www.invalid.com/newpage.pgp'); exit; // make sure to ex

在ASP.Net中,我们有HttpHandler,它可以解析请求并相应地重定向用户,主要用于url重写等

我想知道我们在PHP中是否也有这样的功能,如果有,一个解释它的示例将非常有用


例如,如果我在某个服务器上请求一个图像文件,如果来自服务器x的请求提供了类似的功能,我想将其重定向到某个页面。如果要在php中重定向,可以直接设置头

eg
header('Location: http://www.invalid.com/newpage.pgp');
exit; // make sure to exit or the script will keep executing
如果需要当前url等,则需要查询$\u服务器变量

试试这个,看看你能从你的服务器上得到什么信息

var_dump($_SERVER);

您必须实现自己的机制或使用框架。Zend Framework的请求经历了一个类似的概念,但仍然与处理程序有很大的不同。

如果我正确理解HTTPHandlers,这通常是通过一些技巧实现的。显然,任何进入web服务器(IIS、Apache等)的请求都将尝试与文件匹配

GET /index.php   HTTP 1.1
该请求将到达
index.php
文件,php将处理该文件,然后将响应发送到客户端。显然,客户端将看到PHP产生的任何输出

HttpHandler通过查看传入的请求并将该请求映射到一段代码(可能是一个函数)来工作,但它可以告诉web服务器客户端应该如何通过配置访问该代码

下面是对映射的说明

<httpHandlers>
     <add verb="*" path="*.sync" type="MyHandler.SyncHandler, MyHandler" />
</httpHandlers>
从这里开始,PHP只需要知道用户在寻找什么url,并决定要做什么。这可以通过使用从Apache传递的
请求URI
值来完成

$_SERVER['REQUEST_URI'];
因此,如果用户请求:

GET /profile/settings  HTTP 1.1
请求URI
将是:

$url = $_SERVER['REQUEST_URI'];
echo $url; // => "/index.php/profile/settings"
除此之外,用户还可以将正则表达式应用于
请求URI
,并在多个函数之间切换以处理请求

$url = $_SERVER['REQUEST_URI'];
echo $url; // => "/index.php/profile/settings"