当前位置: 首页 > 知识库问答 >
问题:

Nginx总是将Laravel路由重定向到默认根索引。php页面

班经亘
2023-03-14

我是一个新的拉威尔学习者。在我的Mac(macOS 10.13)上,我配置了Nginx、PHP和MySQL环境。首先,Nginx localhost:8080/laravel/public会毫无问题地显示laravel欢迎页面。但当我尝试添加自定义路线时,例如:

Route::get('test', function () {
    return 'Hello World!';
});

我有404页localhost:8080/laravel/public/test.

在我谷歌了路由404问题的解决方案后,我通过添加

请尝试\u文件$uri$uri//索引。php$查询字符串

详情如下:

server {
    ...

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

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

现在是故事,404问题已经修复。但是我仍然无法访问正确的路线页面。

当我再次打开localhost:8080/laravel/public/test时,浏览器会将我带到nginx docroot页面(即localhost:8080/index.php)。

我尝试了PHP工匠服务在我laravel主文件夹,使用该命令localhost:8000/test可以正确访问"Hello World!"文本。

更新:

我只是在localhost:8080/之后尝试了一些其他字符串,例如localhost:8080/abc或其他什么,似乎任何子路径都会将我带到localhost:8080/索引。php页面!试用后,文件$uri$uri//index。php$已添加查询字符串。如果我删除这行代码,localhost:8080/abc将显示404页(这应该是正确的,因为根文件夹中没有abc.php文件)。

好像加了

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

nginx将所有无法识别的url重定向到默认主页?

有人能告诉我为什么我的Nginx不能与Laravel路由后try_files$uri$uri//index.php?$query_string添加?

如果你需要更多的细节,请告诉我。非常感谢!

共有1个答案

凌恩
2023-03-14

嗯...我解决了这个问题,修改我的Nginx网站配置文件,改变

server {

    ...

    root         /var/www;

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

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

server {

    ...

    root         /var/www/laravel/public;

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

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

是的,只需将根路径更改为laravel的公用文件夹,然后重新启动nginx服务器

现在我得到了Hello World!onhttp://localhost:8008/test

 类似资料:
  • 我写了一个注销函数,简单地从数据库中删除所有必要的信息后,我清除会话和重定向注销。我想将用户重定向到主页(登陆页面),这在另一个功能中是登录(成功登录后,我会重定向到主页)。在我的代码中是这样做的: 路线。php有以下途径: 正如我在登录时所说的那样,我以前也这样做过,但它确实起了作用,但这里的意思是: 下面是包含重定向的登录部分的外观: 请支持并让我知道为什么它可以一次又一次地工作,尽管这两个方

  • 当我在web.php中定义了路由时,我在使用Laravel时遇到了一个路由未定义的错误,如下所示: 我正在从下面的代码重定向到路由 auth()代码可以工作,但当调用重定向时,我得到错误'route[home]not defined'。有没有人知道我怎么解决这个错误。任何帮助都会很好

  • 我是一个新手,希望在筛选之前进行筛选,该筛选将检查我想要的内容,并将带错误或成功的重定向返回到相同的配置文件。 这是我的过滤前函数 这是我的路线 Route::组(数组) 路由::get('/user/{username}',数组('as'= 和我的ProfileController公共功能 所以我的问题是如何让这些重定向工作,我试图搜索谷歌等,我找不到任何答案。这是我在这里的第一篇文章,我的英语

  • 我有一台本地haproxy服务器(10.10.1.18),用于loadbalance 2台nginx本地Web服务器(web1=10.10.1.21,web2=10.10.1.22)。 我可以达到本地IP的web服务器到index.php文件成功http://10.10.1.21/http://10.10.1.22/ 但是,当我指向haproxy的本地ip时http://10.10.1.18/,它

  • 我有一条基本路线,如下所示: 逻辑是我希望仅为数值。我现在要做的是,如果值是非数字的,则声明对此的重定向。假设的输入是。在这种情况下,我希望它重定向到值为的。 我尝试使用,但无法正常工作。它看起来像这样: 我更愿意将重定向放在组内,但如果这是唯一的方法,它可以放在组外。任何帮助都将不胜感激。 发生的情况是,如果我声明了路由重定向,就会出现404错误。 编辑:我想在文件。我知道如何在控制器中执行此操