我正在使用Slim框架开始一个新项目。到目前为止,一切都进展顺利,我正在微型框架中寻找的所有内容。我已经离开PHP世界已有一段时间了,所以现在我逐渐了解了内置的PHP Web服务器。唯一的问题是:我该如何投放我的静态内容?
作为参考,这是我的项目布局:
project:
public folder
index.php
static/css/style.css
templates/index.html . # I'm using twig (coming from python Flask)
我的模板:
<html>
<link href="{{ base_url() }}/css/agency.css" rel="stylesheet">
<!-- other cool layout stuff -->
和我的index.php(非常小)
require 'vendor/autoload.php';
$app = new \Slim\App();
$app->get('/', function ($request, $response, $args) {
$response = $this->view->render($response, 'base.html');
return $response->write("Hello ");
});
$app->run();
当我从命令行启动内置的php服务器时,我会这样做:
php -S localhost:8080 -t public public/index.php
虽然效果很好,但是当我尝试访问静态内容时,它只是返回呈现的base.html文件
请让我知道开始此操作的最佳方法,以便正确显示静态内容。感谢您的帮助。
答案 0 :(得分:0)
因此,根据kuh-chan和Nima指出的文档,我将其扩展为实现Slim目的,并在文件不存在时返回404响应。
if (PHP_SAPI == 'cli-server') {
$url = parse_url($_SERVER['REQUEST_URI']);
$file = __DIR__ . $url['path'];
// check the file types, only serve standard files
if (preg_match('/\.(?:png|js|jpg|jpeg|gif|css)$/', $file)) {
// does the file exist? If so, return it
if (is_file($file))
return false;
// file does not exist. return a 404
header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found');
printf('"%s" does not exist', $_SERVER['REQUEST_URI']);
return false;
}
}