Базовый URL-адрес маршрутов PHP Silex

Мой проект — это просто тестовый проект API на локальном сервере в подпапке. Итак, мой URL будет http://localhost/test-project-x/api/. Там есть index.php.

Корневой маршрут доступен по указанному выше URL-адресу. Но как только я перехожу к http://localhost/test-project-x/api/test, я получаю 404. Чтобы это заработало, мне нужно изменить маршрут PHP с $app->get('/test' ... на $app->get('/test-project-x/api/test' ....

Я хочу, чтобы это работало с /test. Но для жизни моей я не могу понять / вспомнить, как ...

test-project-x/api/index.php:

<?php    
require_once __DIR__.'/../../vendor/autoload.php';

$app = new Silex\Application();
$app['debug'] = true;

$app->get('/test', function() use($app) {
    return 'This would be the test route.';
});

$app->get('/', function() use($app) {
    return "This would be the root.";
});

$app->run();

test-project-x/api/.htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>

person Coo    schedule 17.05.2015    source источник


Ответы (1)


Просто используйте RewriteBase с правильной папкой:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /test-project-x/api/
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule>

И вот, ваши маршруты теперь находятся в папке /test-project-x/api.

person mTorres    schedule 17.05.2015