我有全球项目(web wrapp)和多个项目。文件结构
project/
application/
index.php
project1/
project2(on laravel)/
public/
index.php
所以,如果我调用project,我会得到index.php。 我想用url / project2运行project2 / public / index.php。 nginx conf下面:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/user/projects/project/application;
index index.php index.html index.htm;
location /project2/ {
root /home/user/projects/project/application/project2/public/;
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_read_timeout 600;
}
}
使用这种配置,当询问/ project2时,我得到nginx的404。如果我重新播放
location /project2/ {
root /home/user/projects/project/application/project2/public/;
try_files $uri $uri/ /index.php$is_args$args;
}
与
location /project2/ {
root /home/user/projects/project/application/project2/public;
try_files $uri $uri/ /project2/public/index.php$is_args$args;
}
我从Laravel找不到。有可能解决我的问题吗?
答案 0 :(得分:0)
您不需要在project2 root
中设置location
:
试试这个:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/user/projects/project/application;
index index.php index.html index.htm;
location ~ /project2 {
try_files /project2/public/$uri /project2/public/$uri/ /project2/public/index.php?q=$uri&$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_read_timeout 600;
}
}
答案 1 :(得分:0)
我想,在这一点上问题是在laravel。我将所有路线都放在Route::prefix('project2', function(){ ... });
中并且有效。我用了
location /project2/ {
root /home/user/projects/project/application/project2/public;
try_files $uri $uri/ /project2/public/index.php$is_args$args;
}