0

我有一个具有以下结构的Slim应用程序

project_root/
  index.php
  Slim
  Client
    index.html
    scripts
    styles
    partials

我需要执行以下操作:

  1. Slim/PHP 应用程序应该充当rest server响应以json开头的 url/apis
  2. 其他 url 应该被重定向到Client资源,即。样式,脚本应静态提供。
  3. 客户端应用程序是一个独立的应用程序。(在这种情况下是角度应用程序)

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 样式和脚本。

$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');
    }]
 }
4

2 回答 2

1

似乎 Slim 存在某种错误,用于重定向到不存在的子目录 .htacess 重写。我有一个类似的问题。我实际上创建了子目录并使 .htaccess 将所有 API 调用定向到特定子目录并避免 App 目录。

看看这个。它最终解决了我的问题。

更新:在 Slim 帮助线程中查看此内容。他们确实有这个问题。

于 2014-03-25T05:20:17.153 回答
0

你可以在你的 .htaccess 文件中使用这些指令(Apache Module mod_rewrite)来只发送不存在的文件到 Slim。

RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [QSA,L]

于 2013-10-18T16:17:29.197 回答