可以说,我想去PHP 5可以处理类似于Tomcat或GAE的请求吗?
http://example.com/something/a/few/directories/deep
是有办法,我可以处理这个在PHP中,而不必让那些目录?我只想将域名后面的所有内容作为变量并从那里开始工作。
可以说,我想去PHP 5可以处理类似于Tomcat或GAE的请求吗?
http://example.com/something/a/few/directories/deep
是有办法,我可以处理这个在PHP中,而不必让那些目录?我只想将域名后面的所有内容作为变量并从那里开始工作。
这实际上不是一个PHP5相关的问题 - URL重写是您的网络服务器的一部分。
你可以,当你在Apache上使用mod_rewrite(不知道IIS,但可能有类似的东西)。
这样做的最常见方法是使用mod_rewrite。 (有关于此的介绍,请致电http://articles.sitepoint.com/article/guide-url-rewriting)。这允许您在内部映射这些友好的URL以查询传递给您的PHP脚本的参数。
你不需要需要mod_rewrite来处理这样的场景。大多数流行的PHP框架目前都支持URI段解析。这是一个简单的例子,仍然有一些安全漏洞被修补。
你可以通过采取全球$ _ SERVER变量之一,并分割它向前处理这个斜杠,像这样:
if (!empty($_SERVER['REQUEST_URI'])) {
$segments = explode('/', $_SERVER['REQUEST_URI']);
}
的$段变量现在将包含段的数组遍历。
当然。如果开始是恒定的或者只有几个可能的值,则甚至不需要mod_rewrite
。创建一个名为something
(无扩展名)的php文件并告诉Apache(通过SetHandler
或类似的指令)将其视为PHP。然后,在脚本中检查$_SERVER['PATH_INFO']
,该脚本将看起来像a/few/directories/deep
IIRC。不管你喜欢,你都可以用它来发送你的请求。
或者,正如Martin所说的那样,使用简单的mod_rewrite
规则将其重写为/dispatch.php/something/a/few/directories/deep
,然后在PATH_INFO
中有完整的路径。
假设你使用的是Apache ...
添加重写规则(在你的虚拟主机的conf或刚落,在您的文档根.htaccess文件),指向一切的index.php。那么你的index.php的内部,解析请求URI和提取路径
RewriteEngine on
RewriteRule ^.*$ index.php [L,QSA]
的index.php:
$文件路径= $ _SERVER [ 'REQUEST_URI'];
$ filepath = ltrim($ myname,'/'); //如果你想要的话可以带上斜杠。
这是关于你想要的mod_rewrite规则的最大数量。 – staticsan 2009-10-27 23:53:34
你仍然需要mod_rewrite将所有调用重定向到奇异的PHP脚本;) – 2009-10-27 23:41:25
你需要mod_rewrite或其他一些机制将所有这些不同的请求映射到一个执行这种分割的php脚本(通常称为路由)。 – rojoca 2009-10-27 23:43:40
@Kent,kudos。我为自己踢了一把。 – 2009-10-28 00:19:22