Директива index
ищет файл в /var/www/madol.example.com/horizontal-laravel/index.php
и ничего не находит.
Самое простое решение - расширить директиву index
, чтобы искать index.php
в пределах public
папка.Подробнее см. в этом документе .
Например:
location /horizontal-laravel {
index index.php public/index.php index.html;
...
}
Кроме того, вы можете остановить обработку индекса для этого location
, удалив $uri/
термин файла из директивы try_files
.Подробнее см. в этом документе .
Например:
location /horizontal-laravel {
try_files $uri /horizontal-laravel/public/index.php;
...
}
Вы можете явно перенаправить этот URI с помощью оператора rewrite...last
.Подробнее см. в этом документе .
location = /horizontal-laravel/ {
rewrite ^ /horizontal-laravel/public/index.php last;
}
location /horizontal-laravel {
...
}
Наконец, вы можете изменить схему URI, чтобы исключить возможность показа бита /public/
.Это, вероятно, лучше всего достигается с помощью директивы alias
.Вам понадобится вложенное расположение для выполнения сценариев PHP под новым корнем.
Например:
location ^~ /horizontal-laravel {
alias /var/www/madol.example.com/horizontal-laravel/public;
if (!-e $request_filename) { rewrite ^ /horizontal-laravel/public/index.php last; }
location ~ \.php$ {
if (!-f $request_filename) { return 404; }
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
include snippets/fastcgi-php.conf;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
Обратите внимание, что директивы if
и SCRIPT_FILENAME
используют $request_filename
дляполучить путь к локальному файлу.Вам нужно проверить, что находится внутри snippets/fastcgi-php.conf
, чтобы убедиться, что оно ничего не сломало.
Использование try_files
с alias
проблематично из-за этой проблемы .См. это предупреждение об использовании if
.