提问者:小点点

Laravel 5.2和PHP 7的Nginx配置:路由不工作


我正在尝试设置一个AWS Ubuntu服务器来托管一个Laravel项目。我在让路由正常工作方面遇到了问题,我怀疑我的Nginx虚拟主机配置文件是罪魁祸首。

我认为特别是try_files线是问题?我已经尝试了try_files$uri$uri//index.php$is_args$args;以及try_files$uri$uri//index.php?$query_string;,以及其他一些,有几个错误的结果,包括:

  • 404错误
  • 500个错误
  • 链接到源代码的下载
  • 它是当前的行为,被重定向到/index。php/(显示Laravel欢迎页面)

这里是my/etc/nginx/sites enabled/default:

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /var/www/html/public;
    index index.php index.html index.htm;

    # Make site accessible from amazon aws
    server_name xxxx.us-west-2.compute.amazonaws.com;

    location / {
            # Try file, then try folder, then pass to Laravel's /public/index.php
            try_files $uri $uri/ /index.php$is_args$args;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

            try_files $uri /index.php =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
    }
}

这是文件的当前状态,就像我说的,它当前将任何真正的路由重定向到blahblah.com/index.php/并显示Laravel欢迎页面。未设置的假路由会导致Laravel 404页面。

我被难住了,因为有几个关于这个的指南,我已经尝试了我能找到的所有建议,所以我一定错过了什么。

看来php7工作正常,不是问题所在,或者这可能是php配置文件中的问题?

发展:如果我使用其IP访问该网站(感谢Oliver Queen),它似乎可以正常工作,你知道我如何在使用域名时让它工作吗?


共1个答案

匿名用户

用以下代码替换当前的位置/

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

然后将其下方的位置替换为:

location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
}