У меня есть проект Laravel (5.7), который будет развернут на сервере (nginx) с несколькими проектами. Я запускаю проект на своем локальном компьютере с помощью Apache, и я попытался запустить его с подкаталогом, и он работает на моем компьютере.
У нас возникла проблема с развертыванием моего проекта в подкаталоге сервера (nginx), я не знаю, есть ли проблема с проектом Laravel, потому что каждый раз, когда мы переходим к http://172.1.1.1/sample моего проекта, он всегда показывает «Страница 404 не найдена» Laravel, потому что Laravel думал, что / sample - это путь, поэтому я думаю, что 172.1.1.1/sample запускает Laravel, но он не делает / sample как root, но когда мы переходим к 172.1.1.1, другой запущенный здесь проект работает. Я уже добавил следующий код в свой проект Laravel.
В моем AppServiceProvider.php я добавляю следующий код:
public function boot()
{
\URL::forceRootUrl(\Config::get('app.url'));
if (str_contains(\Config::get('app.url'), 'https://')) {
\URL::forceScheme('https');
//use \URL:forceSchema('https') if you use laravel < 5.4
}
}
Так что, когда я изменю APP_URL в .env своего проекта, он будет работать.
APP_URL=http://localhost:9021/sample
И добавьте следующее в .htaccess моей общей папки:
RewriteEngine On
RewriteBase /sample/
Итак, это работает на моем локальном компьютере, но это не работает, когда мы пытались его развернуть. Как только мы перейдем к 172.1.1.1/sample (sample-ip), он просто покажет «Страница 404 не найдена».
Я хочу знать, есть ли другой способ изменить контекстный путь laravel 5.7. Потому что я не тот, кто настраивает nginx на сервере, но я хочу убедиться, что проблема не в Laravel 5.7.
Спасибо за помощь, ребята.
Как это можно решить, сэр @ShaielndraGupta? Я имею в виду, верны ли мои конфигурации в Laravel или мне нужно что-то изменить в Laravel? Я просто хочу убедиться, что конфиги для Laravel в порядке, потому что я не тот, кто обрабатывает конфиги nginx. Спасибо, сэр.
хотите, чтобы http://localhost:9021/sample был вашим базовым путем, так как вы можете запускать несколько проектов на одной машине .. ??
На сервере более 1 проекта. Итак, проект 1 выполняется в локальный: 9021, тогда мы развернем мой проект в localhost: 9021 / образец. Итак, корневая папка моего проекта Laravel будет localhost: 9021 / образец. Но произошло то, что Laravel рассмотрел / sample как путь маршрута, поэтому он возвращает «Страница 404 не найдена».
Сконфигурируйте свой nginx для использования вместо этого localhost: 9022 для вашего проекта. APP_URL должен содержать только доменное имя, например APP_URL=localhost:9022.
@Mysteryos, тогда как мы можем заставить Laravel читать localhost: 9022 / sample в качестве корневого домена. Так что он не будет читать / пробовать как свой собственный маршрут.






см. эту документацию
Но что, если проект находится в подкаталоге. Тогда в nginx.conf мы просто добавим location /sample {}, верно? Нужно ли мне также что-то настраивать в Laravel?
теперь это не способ работы laravel, вам нужно разделить свой проект и создать файл конфигурации, который указывает на общую папку этого проекта.
Что ты имеешь в виду? Наша конфигурация указывает на общедоступную папку laravel. Итак, у нас есть этот location /sample {} - когда мы обращаемся к расположение: 9022 / образец, laravel читает его как маршрут laravel, а не корень laravel.
Следует ли мне поместить все общедоступные файлы в папку / sample? затем остальные файлы laravel - я создам папку «laravel», так что теперь у меня будет <root_folder> - <laravel_folder> (остальные файлы laravel) - <sample_folder> (все общедоступные файлы). Затем я просто отредактирую индекс. php в общедоступных файлах и указать его в папке laravel?
эту проблему можно решить с помощью виртуального хоста