Проблемы с интеграцией Slim php и клиентского приложения

У меня есть приложение 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, которые используются клиентским приложением?

Может быть через какой-то тонкий маршрут (предпочтительно) или через конфигурацию apache

В rails мы можем написать следующие маршруты.

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

ИЗМЕНИТЬ:

Похоже, что /* еще не поддерживается в Slim или отсутствует в документации.

Как и в node.js, мы делаем,

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

person hitesh israni    schedule 18.10.2013    source источник


Ответы (2)


Кажется, у Слима есть какая-то ошибка для перенаправления в несуществующий подкаталог, который перезаписывает .htacess. У меня была аналогичная проблема. Я фактически создал подкаталог и сделал .htaccess, чтобы направлять все вызовы API в определенный подкаталог и избегать каталога приложений.

Взгляните на это. В конце концов это решило мою проблему.

ОБНОВЛЕНИЕ: взгляните на это в ветке справки Slim. У них действительно была эта проблема.

person Abhishek Deb    schedule 25.03.2014
comment
Спасибо, попробую предложенные изменения. - person hitesh israni; 25.03.2014

Вы можете использовать эти инструкции (модуль Apache mod_rewrite) в файле .htaccess, чтобы отправлять в Slim только несуществующие файлы.

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

person webaba    schedule 18.10.2013
comment
У меня есть эти конфиги в моем .htaccess - person hitesh israni; 18.10.2013
comment
Вы получаете ошибку 404 при прямой попытке доступа к этим статическим файлам через браузер? - person webaba; 20.10.2013