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

时间:2016-01-13 22:25:36

标签: drupal-7 webserver http-status-code-404 php-5.6

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

  

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

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

有没有解决办法?

1 个答案:

答案 0 :(得分:2)

根据PHP Built-in web server docs,要处理自定义请求,您需要指定一个返回FALSE的“路由器”脚本(在命令行中给出),然后按原样返回请求的资源,否则脚本的输出将返回给浏览器。

使用路由器脚本

这是处理图像请求,然后显示它们的简单示例,否则如果请求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&amp; 8

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

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