Как использовать symfony маршрутизацию с nginx - PullRequest
0 голосов
/ 02 мая 2020

Я использую Symfony компонент маршрутизации вне приложения Symfony с Nginx


declare(strict_types=1);

namespace App;

use Symfony\Component\Routing\Matcher\UrlMatcher;
use Symfony\Component\Routing\RequestContext;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\RouteCollection;
use Symfony\Component\HttpFoundation\Request;
use App\HomeController;
use Article\Infrastructure\Http\ArticlesController;
class Router {

    private $routes;

    public function __construct() {

        $this->generateRoutes();

        $context = new RequestContext();

        $request = Request::createFromGlobals();
        $context->fromRequest($request);
        $matcher = new UrlMatcher($this->routes, $context);
        $parameters = $matcher->match($request->getPathInfo());
        list($class, $action) = $parameters['_controller'];
        unset($parameters['_controller']);
        $controller = new $class;
        $controller->$action($parameters);
    }

    public function generateRoutes() {
        $this->routes = new RouteCollection();
        $this->routes->add('home', new Route('/', [
                    '_controller' => [HomeController::class, 'actionIndex']
        ]));   
         $this->routes->add('articles', new Route('/articles', [
                    '_controller' => [ArticlesController::class, 'actionIndex']
        ]));         
        return $this->routes;
    }
}

Но только / работает правильно. HomeController показывает мой файл ветки - все в порядке. Когда я пытаюсь получить site/articles, я получаю Nginx 404 ошибку. Мой nginx .conf:

server {
    index index.php;
    server_name site.local;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/site.local/public;

    location ~ \.php$ {
try_files $uri /index.php$is_args$args;
#        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
 location ~ \.php$ {
        return 404;
    }
}

и в php ошибок нет. Как это решить? Мне кажется, я не знаю что-то о nginx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...