Я использую 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