如何使用内置的PHP服务器处理URL中有点的回调



我在内置的PHP开发服务器(由:php -S localhost:8888运行)中使用Drupal站点(带有.htaccess和干净的URL,运行良好),在CMS中,我动态生成要公开的XML文件,但当我试图打开/foo/bar.xml时,会发生以下错误:

在此服务器上找不到请求的资源/foo/bar.xml

经过调查,PHP内置服务器似乎认为所有包含点的文件都必须是本地文件系统中的文件。

有什么变通办法吗?

根据PHP内置web服务器文档,要处理自定义请求,需要指定一个返回FALSE的"router"脚本(在命令行中给出),然后按原样返回请求的资源,否则脚本的输出将返回到浏览器。

使用路由器脚本

这里有一个简单的例子,它处理对图像的请求,然后显示它们,否则如果请求HTML文件,它将显示"欢迎使用PHP":

<?php
// router.php
if (preg_match('/.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
    return false;    // serve the requested resource as-is.
} else { 
    echo "<p>Welcome to PHP</p>";
}
?>

Drupal 7&8

对于Drupal 7&8,您可以使用.ht.router.php文件,然后将其运行为:

php -S localhost:8888 .ht.router.php 

最新更新