Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP5可以做类似于Tomcat或GAE的请求处理吗?_Php_Http_Httpwebrequest_Requesthandler - Fatal编程技术网

PHP5可以做类似于Tomcat或GAE的请求处理吗?

PHP5可以做类似于Tomcat或GAE的请求处理吗?,php,http,httpwebrequest,requesthandler,Php,Http,Httpwebrequest,Requesthandler,假设我想去 有没有一种方法可以在PHP中处理这个问题,而不必创建这些目录?我只想把域名后的所有内容作为变量,并从中开始工作。这实际上不是一个与PHP5相关的问题-URL重写是Web服务器的一部分 当您在Apache上使用时,您可以(不知道IIS,但可能有类似的情况)。这实际上不是与PHP5相关的问题-URL重写是Web服务器的一部分 当您在Apache上使用时,您可以这样做(不知道IIS,但可能有类似的情况)。最常用的方法是使用mod_rewrite。(关于这一点的介绍中没有)。这允许您在内部

假设我想去


有没有一种方法可以在PHP中处理这个问题,而不必创建这些目录?我只想把域名后的所有内容作为变量,并从中开始工作。

这实际上不是一个与PHP5相关的问题-URL重写是Web服务器的一部分


当您在Apache上使用时,您可以(不知道IIS,但可能有类似的情况)。

这实际上不是与PHP5相关的问题-URL重写是Web服务器的一部分


当您在Apache上使用时,您可以这样做(不知道IIS,但可能有类似的情况)。

最常用的方法是使用mod_rewrite。(关于这一点的介绍中没有)。这允许您在内部将这些友好URL映射到传递给PHP脚本的查询参数。

最常用的方法是使用mod_rewrite。(关于这一点的介绍中没有)。这允许您在内部将这些友好的URL映射到传递给PHP脚本的查询参数。

您不需要修改来处理这种情况。目前大多数流行的PHP框架都支持URI段解析。这是一个简单的例子,仍然有一些安全漏洞需要修补

您可以通过获取一个全局$\u服务器变量并按如下所示的正斜杠将其拆分来处理此问题:

if (!empty($_SERVER['REQUEST_URI'])) {
    $segments = explode('/', $_SERVER['REQUEST_URI']);
}

$segments变量现在将包含一个要迭代的段数组。

您不需要修改来处理这种情况。目前大多数流行的PHP框架都支持URI段解析。这是一个简单的例子,仍然有一些安全漏洞需要修补

您可以通过获取一个全局$\u服务器变量并按如下所示的正斜杠将其拆分来处理此问题:

if (!empty($_SERVER['REQUEST_URI'])) {
    $segments = explode('/', $_SERVER['REQUEST_URI']);
}

$segments变量现在将包含一个要迭代的段数组。

当然。如果起始值是常量或只有几个可能的值,则甚至不需要
mod_rewrite
。制作一个名为
something
(无扩展名)的php文件,并告诉Apache(通过
SetHandler
或类似指令)将其视为php。然后,检查脚本中的
$\u服务器['PATH\u INFO']
,它看起来像
a/minor/directories/deep
IIRC。你可以用它来路由你的请求,不管你喜欢什么


或者。正如Martin所说,使用一个简单的
mod_rewrite
规则将其重写为
/dispatch.php/something/a/minor/directories/deep
,然后您就可以在
path_INFO
中找到整个路径。如果起始值是常量或只有几个可能的值,则甚至不需要
mod_rewrite
。制作一个名为
something
(无扩展名)的php文件,并告诉Apache(通过
SetHandler
或类似指令)将其视为php。然后,检查脚本中的
$\u服务器['PATH\u INFO']
,它看起来像
a/minor/directories/deep
IIRC。你可以用它来路由你的请求,不管你喜欢什么


或者。正如Martin所说,使用一个简单的
mod_rewrite
规则将其重写为
/dispatch.php/something/a/minor/directories/deep
,然后假设您使用的是apache,那么您在
path_INFO

中拥有整个路径

添加一个重写规则(在vhost conf中或在doc root中删除.htaccess文件),将所有内容指向index.php。然后在index.php内部,解析请求uri并提取路径

RewriteEngine on
RewriteRule ^.*$ index.php [L,QSA]
index.php:
$filepath=$\u服务器['REQUEST\u URI']

$filepath=ltrim($myname,'/')//如果需要,可以去掉前导斜杠。

假设您使用的是apache

添加一个重写规则(在vhost conf中或在doc root中删除.htaccess文件),将所有内容指向index.php。然后在index.php内部,解析请求uri并提取路径

RewriteEngine on
RewriteRule ^.*$ index.php [L,QSA]
index.php:
$filepath=$\u服务器['REQUEST\u URI']

$filepath=ltrim($myname,'/')//如果需要,可以去掉前导斜杠。

您仍然需要mod_rewrite将所有调用重定向到单个PHP脚本;)您需要mod_rewrite或其他机制来将所有这些不同的请求映射到一个php脚本,该脚本执行此分段(通常称为路由)。@Kent,kudos。我为此感到非常高兴。您仍然需要mod_rewrite将所有调用重定向到单个PHP脚本;)您需要mod_rewrite或其他机制来将所有这些不同的请求映射到一个php脚本,该脚本执行此分段(通常称为路由)。@Kent,kudos。这是你想要的最大mod_重写规则量。这是你想要的最大mod_重写规则量。