我正在尝试设置一个AWS Ubuntu服务器来托管一个Laravel项目。我在让路由正常工作方面遇到了问题,我怀疑我的Nginx虚拟主机配置文件是罪魁祸首。
我认为特别是try_files线是问题?我已经尝试了try_files$uri$uri//index.php$is_args$args;
以及try_files$uri$uri//index.php?$query_string;
,以及其他一些,有几个错误的结果,包括:
这里是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),它似乎可以正常工作,你知道我如何在使用域名时让它工作吗?
用以下代码替换当前的位置/
:
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;
}