NGINX: Неизвестный первичный скрипт - при вызове динамического URL с префиксом контроллера

Мы столкнулись с проблемой и не можем ее исправить. В настоящее время мы можем запустить наше приложение, как и ожидалось - 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 не найден

Конфигурация NGNIX:

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 ?

2
задан 3 May 2018 в 13:59
1 ответ

У вас есть два варианта:

Либо 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;
}
2
ответ дан 3 December 2019 в 11:25

Теги

Похожие вопросы