Удаление index.php из Laravel в подкаталоге Nginx - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь запустить две кодовые базы в одном домене, статический сайт vue-cli и API бэкэнда Laravel.

Статический сайт будет использоваться для внешнего интерфейса, и это будет запрашивать базу кодов laravel. У меня проблемы с удалением index.php из моих URL-адресов laravel.

Моя файловая система выглядит следующим образом;

/var/www/site/frontend/dist/index.html <-- static homepage
                           /another.html <-- another static page
/var/www/site/backend/api/index.php <-- api access

Запросы к моему API будут выглядеть примерно так:

/api <-- laravel landing page, only for debugging
/api/autocomplete/artist/{artistName}
/api/autocomplete/artist/{artistName}/album/{albumTitle}

Я думаю, что я близко, но не совсем там, лучшее, что у меня было, это л Целевая страница Laravel, но всякий раз, когда я добавляю параметры маршрута, я получаю 404, ниже моя конфигурация;

server {
    listen 80 default_server;

    root /var/www/site/frontend/dist;

    index index.html index.htm index.php;

    server_name _;

    # Make index.php in /api url unnecessary
    location /api {
      alias /var/www/site/backend/api;

      try_files $uri $uri/ /index.php?r=$is_args$args;

     location ~ \.php$ {
         include snippets/fastcgi-php.conf;
         fastcgi_param SCRIPT_FILENAME $request_filename;
         fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
     }

    }

    location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
    }
}

1 Ответ

0 голосов
/ 27 апреля 2018

Вам необходимо использовать модификатор ^~, в противном случае ваш другой блок location ~ \.php$ имеет приоритет с неправильным корнем документа. Подробнее см. в этом документе .

Вам не нужно использовать alias, поскольку последняя часть корня документа совпадает с местоположением - что упрощает вещи, так как alias и try_files имеет проблем при совместном использовании.

Последний элемент оператора try_files должен быть URI, который должен включать префикс местоположения. Подробнее см. в этом документе .

Например:

location ^~ /api {
    root /var/www/site/backend;
    try_files $uri $uri/ /api/index.php?r=$is_args$args;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...