我有一个Slim应用程序,其结构如下
project_root/
index.php
Slim
Client
index.html
scripts
styles
partials
我需要做以下事情:
rest server
,在json
中以/apis
Client
和资源即。样式,脚本应该静态提供。index.php的内容就像
$app = new \Slim\Slim();
$app->add(new \Slim\Middleware\ContentTypes());
// Routes
$app->get('/apis/register',function(){
echo "apis/register";
});
以下路线呈现index.html
页面。我的角度应用程序的初始页面。
但样式和脚本无法提供服务。
我找到了404 Not Found for styles和scripts。
$app->get('/:route',function($route) use ($app) {
$app->config('templates.path', './Client/');
$app->render('index.html');
})->conditions(array("route" => "(index|style)"));
如何托管客户端应用程序使用的styles
和scripts
?
可以通过一些Slim路由(首选)或通过apache配置
在 rails 中,我们可以编写以下路线。
match "/styles" => redirect("/")
match "/partials" => redirect("/")
修改
看起来Slim尚不支持/*
或文档中遗漏了它。
就像我们在node.js中一样,
{
path: '/*',
httpMethod: 'GET',
middleware: [function(req, res) {
res.render('index');
}]
}
答案 0 :(得分:1)
似乎Slim有一些错误,可以重定向到不存在的子目录.htacess重写。我遇到了类似的问题。我实际上创建了子目录并使.htaccess将所有API调用定向到特定的子目录并避开App目录。
看看this。它最终解决了我的问题。
更新:在Slim帮助主题处查看this。他们确实遇到了这个问题。
答案 1 :(得分:0)
您可以在.htaccess文件中使用这些说明(Apache Module mod_rewrite),仅将不存在的文件发送到Slim。
RewriteEngine On RewriteCond%{REQUEST_FILENAME}! - f RewriteRule ^ index.php [QSA,L]