Php Nginx目录和索引文件配置,如Apache

Php Nginx目录和索引文件配置,如Apache,php,apache,nginx,Php,Apache,Nginx,我决定在我本地的机器上试用Nginx,结果有一个地方很痛苦 在Nginx之前,我使用的是Apache,我的根文件夹配置为/var/www/html。服务器名为localhost。这意味着在访问localhost/project时,它打开了/var/www/html/project中的内容,所有这些都工作得很好 然而,在Nginx上,我将我的根和服务器名配置为完全相同的根=/var/www/html和服务器\ u name=localhost,我希望得到与Apache相同的结果 问题是,只有子目录

我决定在我本地的机器上试用Nginx,结果有一个地方很痛苦

在Nginx之前,我使用的是Apache,我的根文件夹配置为/var/www/html。服务器名为localhost。这意味着在访问localhost/project时,它打开了/var/www/html/project中的内容,所有这些都工作得很好

然而,在Nginx上,我将我的根和服务器名配置为完全相同的根=/var/www/html和服务器\ u name=localhost,我希望得到与Apache相同的结果

问题是,只有子目录的主页起作用。例如,localhost/project可以工作,但localhost/project/foo返回404

如果我将root配置为projectroot=/var/www/html/project的根,那么我就可以完美地访问localhost/project/foo,并且一切正常


这里有什么问题?应该是这样还是我的配置有问题?

好吧,我建议您为每个应用程序使用虚拟主机。但是在这种情况下,您可以将值autoindex放在位置/配置中。。。。像这样:

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

}

享受Nginx:好得多

你还不完全清楚你有什么文件,在哪里。您的索引配置正确吗?foo是文件还是目录?如果是目录,当您添加尾部斜杠/?时会发生什么?这里是我的配置->请注意,几乎没有带注释的try\u文件行。我都试过了,但都没有得到预期的结果。@Brad这是控制器的动作。该项目基于laravel框架。所以,它有MVC结构,如果我理解正确,每个请求都会通过projects index.php文件。但是,如果我创建一个文件夹和一些php文件并尝试访问它,它确实可以工作。嗯,现在我更困惑了,因为我认为这无关紧要。@user3722573啊,你应该在你的问题中添加那个细节。这是需要知道的重要信息。Laravel有一个相当大的配置文件,您需要它在Nginx中工作。我现在身上没有副本,但如果你四处搜索,你会找到它。@Brad是的,我没有提到这一点,因为我认为这不重要,但我尝试在laravels公用文件夹中使用php文件创建文件夹。我可以很好地访问它。所以是的。。。老实说,我现在更困惑了,这就是我试图不做的。我知道在真实的服务器中这是必须的,但我已经习惯了localhost/project之类的东西;无论如何,感谢您的自动索引,我们将很快尝试。