Некоторые URL-адреса PHP загружаются, а не выполняются Nginx. У меня есть существующее веб-приложение, которое работает нормально. Мне поручено добавлять дополнительные смонтированные приложения в папки основного приложения. Каждое из этих приложений имеет свой собственный контроллер фронтального контроллера index.php
.nginx, обслуживающий некоторые URL-адреса PHP, вместо загрузки
Для этой настройки я создал символические ссылки внутри $document_root/app
, а символические ссылки указывают на папку, содержащую передний контроллер index.php
.
Когда я перехожу к большинству URL-адресов, все работает нормально, основной контроллер фронтального приложения выполнен, и я получаю ожидаемые результаты. Когда я перехожу к несуществующему приложению, я получаю 404 Not Found
от nginx, что ожидается. Но когда я перехожу к одному из приложений, браузер загружает внешний контроллер приложения.
root /my/web/root;
location/{
try_files $uri
/$server_name$uri
/shared$uri
/index.php$is_args$args;
}
location ~ [^/]\.php(/|$) {
disable_symlinks off;
fastcgi_split_path_info ^(.+\.php\b)(.*)$;
fastcgi_param SERVER_NAME $host;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME /index.php;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_pass php-fpm;
}
location ~ ^/app/([a-z-]+)(/.*)?$ {
try_files $uri
/app/$1/index.php$is_args$args
=404;
}
URL, который запускает скачать:/app/my-app/
(существует)
URL, который ошибки 404:/app/foo/
(не существует)
URL, который выполняет:/foo
Постарайтесь установить местоположение для php в 'location ~ [^ /] \. Php (/ | $)' –
Тот же результат .... –