我一直试图把Flarum放在一个子目录上,Laravel在根目录下。 我已经尝试了一些东西,我从服务器得到的唯一的反应是404或laravel index.php下载(当我访问/论坛)。
从我能记得的事情来看,我试过了:
location ~\.php每个子目录。 我的设置如下:
Laravel一直在努力完成整个过程,但是我不能设法让工作变得轻松。
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; } }
如果configuration不能正常工作,那么这里有一个pastebin链接。
您有两个具有不同文档根的应用程序,都需要PHP支持。 如果保持Laravelconfiguration不变,则可以使用嵌套位置块来实现Flarumconfiguration。
像这样的东西可能会工作:
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$ ,它允许嵌套的位置为Flarum处理PHP脚本。
/forum/index.php是一个URI,并且/forum/前缀是获取正确的index.php文件所必需的。 你不需要一个默认的URI和=404在try_files指令(一个或另一个请)。 我已经删除了什么都不做的fastcgi行。 并在其他fastcgi_param指令之前include fastcgi_params以避免无意的副作用。
这是一个通用的解决scheme,我没有用Laravel或Flarum进行实际的testing。
查看文档以获得更多信息。