Я пытался поместить Flarum в подкаталог, а Laravel находился в корневом каталоге. Я пробовал несколько вещей, и единственный ответ, который я получаю от сервера, - это либо 404, либо загруженный laravel index.php (когда я посещаю / forum).
Насколько я помню, я пробовал:
location ~\.php
для каждого подкаталога.Моя установка выглядит следующим образом:
Laravel прорабатывает весь процесс, но мне не удается заставить работать flarum.
server {
listen 80;
server_name website.web
return 301 https://website.web$request_uri;
}
server {
listen 443 ssl;
server_name website.web
access_log /var/www/logs/access.log;
error_log /var/www/logs/error.log warn;
ssl_certificate /var/www/ssl/website.chained.crt;
ssl_certificate_key /var/www/ssl/website.key;
root /var/www/laravel/public/;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location /forum/ {
root /var/www/;
try_files $uri $uri/ /index.php?$query_string;
}
location /forum/admin/ {
root /var/www/;
try_files $uri $uri/ /admin.php?$query_string;
}
location /forum/api/ {
root /var/www/;
try_files $uri $uri/ /api.php?$query_string;
}
location /flarum {
deny all;
return 404;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Если конфиг по какой-то причине не работает, тогда вот ссылка на pastebin с ним.
У вас есть два приложения с разными корнями документов, которым требуется поддержка PHP. Если вы сохраните конфигурацию Laravel без изменений, вы можете использовать вложенные блоки местоположения для реализации конфигурации Flarum.
Что-то вроде этого может сработать:
location ^~ /forum {
root /var/www;
try_files $uri $uri/ /forum/index.php?$query_string;
location ~ \.php$ {
try_files $uri /forum/index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location /forum/admin {
try_files $uri $uri/ /forum/admin.php?$query_string;
}
location /forum/api {
try_files $uri $uri/ /forum/api.php?$query_string;
}
}
Обратите внимание на следующее:
location ^~ /forum
расположение префикса, имеющее приоритет над верхним уровнем location ~ \.php$
что позволяет вложенному расположению обрабатывать сценарии PHP для Flarum.
В /forum/index.php
это URI, а /forum/
приставка необходима, чтобы подобрать правильный index.php
файл. Вам не нужен URI по умолчанию и =404
на try_files
директива (пожалуйста, одну или другую). Я удалил fastcgi
строки, которые ничего не делают. И include fastcgi_params
перед другими fastcgi_param
директивы, чтобы избежать непреднамеренных побочных эффектов.
Это общее решение, и я еще не тестировал его с Laravel или Flarum.
См. Документацию Вот для большего.