Мы столкнулись с проблемой и не можем ее исправить. В настоящее время мы можем запустить наше приложение, как и ожидалось - URL-адрес SEO работает как чудо и переписывается на index.php
. Проблема в том, что у нас есть дополнительный шаблон URL, например:
/controllerPrefix/a-param.php
/controllerPrefix/an-other-param.php
/ controllerPrefix / an-other-other-param. php
... который нам тоже нужно переписать в index.php
. Мы не можем записать этот динамический URL-адрес, который заканчивается на .php
. Обратите внимание, что нет физических файлов PHP, например a-param.php
-> это динамический шаблон, который заканчивается на .php
. К сожалению, вывод в браузере: Файл не найден.
В nginx 1.10 регистрируется следующая ошибка:
FastCGI отправлен в stderr: «Основной сценарий неизвестен» при чтении заголовка ответа из восходящего потока ...
-> 404 не найден
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Как переписать этот динамический URL, заканчивающийся на / controllerPrefix / *. Php
на index.php
?
У вас есть два варианта:
Либо 1) перенаправить все URI, заканчивающиеся на .php
, на /index.php
], если подходящего файла сценария нет - добавьте оператор try_files
в существующий блок location ~ \ .php $
(подробности см. в этом документе ):
location ~ \.php$ {
try_files $uri /index.php?$args;
...
}
Или 2) перенаправить URI, начинающиеся с / controllerPrefixng
, на /index.php
- добавить новый блок местоположения
(см. этот документ для подробностей):
location ^~ /controllerPrefix/ {
rewrite ^ /index.php last;
}