无法集成Slim php和客户端应用程序

时间:2013-10-18 08:30:42

标签: php url-routing slim

我有一个Slim应用程序,其结构如下

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

我需要做以下事情:

  1. Slim / PHP应用程序应该充当rest server,在json中以/apis
  2. 开头的网址作出回应
  3. 其他网址应重定向到Client和资源即。样式,脚本应该静态提供。
  4. 客户端应用程序是一个独立的应用程序(在这种情况下是角度应用)
  5. 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)"));
    

    如何托管客户端应用程序使用的stylesscripts

    可以通过一些Slim路由(首选)或通过apache配置

    rails 中,我们可以编写以下路线。

      match "/styles" => redirect("/")
      match "/partials" => redirect("/")
    

    修改

    看起来Slim尚不支持/*或文档中遗漏了它。

    就像我们在node.js中一样,

    {
        path: '/*',
        httpMethod: 'GET',
        middleware: [function(req, res) {           
            res.render('index');
        }]
     }
    

2 个答案:

答案 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]