Мы столкнулись с проблемой и не можем ее исправить. В настоящее время мы можем запустить наше приложение, как и ожидалось - 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
. К сожалению, вывод в браузере File not found.
Выполняется следующая ошибка 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
блок (см. этот документ подробнее):
location ^~ /controllerPrefix/ {
rewrite ^ /index.php last;
}