Php Laravel route()返回裸IP地址而不是域

Php Laravel route()返回裸IP地址而不是域,php,nginx,dns,ip,laravel-routing,Php,Nginx,Dns,Ip,Laravel Routing,在我的本地机器上没有发现这一点,但我注意到我的一些页面返回的是我的web服务器的裸IP地址,而不是域名。例如: route('homepage')有时会返回192.XX8.X.2XX或192.XX8.X.2XX/index.php或domain.com/index.php。我的页面在第一次访问时就被缓存了,对于页面上的所有URL,有大约50%的可能性会出现奇怪的事情 对于这种奇怪的行为有什么解释吗?我该如何解决它?这是一个相当令人担忧的问题,因为Googlebot列出了我的网站的另外三个副本 注

在我的本地机器上没有发现这一点,但我注意到我的一些页面返回的是我的web服务器的裸IP地址,而不是域名。例如:

route('homepage')
有时会返回
192.XX8.X.2XX
192.XX8.X.2XX/index.php
domain.com/index.php
。我的页面在第一次访问时就被缓存了,对于页面上的所有URL,有大约50%的可能性会出现奇怪的事情

对于这种奇怪的行为有什么解释吗?我该如何解决它?这是一个相当令人担忧的问题,因为Googlebot列出了我的网站的另外三个副本

注意:我也在为我的路线使用LaraveLocalization包:


我还在Laravel Forge(Nginx)下运行此应用程序

这很可能是由于您的Nginx配置。如果您只在服务器上配置了应用程序,那么它将作为默认设置。当您通过服务器的IP地址(或链接到您的服务器的任何其他域)直接访问服务器时,nginx将为laravel应用程序提供服务

有很多方法可以解决这个问题。我建议为服务器配置一个默认值。这可能只是一个html页面,上面写着“恭喜你到达了服务器”或类似的内容。另一种方法是重新配置应用程序的nginx文件,将任何不正确的域重定向到应用程序的域名

server {
    if ($host != example.com) {
        return 301 https://example.com$request_uri;
    }
    listen 80;
    server_name example.com;
}

更多关于nginx如何处理请求的信息,请参见此处:

我知道,这个问题很老了,但我也遇到了同样的问题并找到了解决方案。(它可以帮助某人)

在此路径上打开文件RouteServiceProvider:
app/Providers/RouteServiceProvider.php

查找函数
mapWebRoutes
。现在,我们必须使用我们环境中的配置添加调用者

protected function mapWebRoutes()
{
    Route::middleware('web')
        ->namespace($this->namespace)
        ->domain(\Config::get('app.url', null))
        ->group(base_path('routes/web.php'));
}
在基于路由构建url的过程中-系统尝试在当前路由中获取局部变量
,如果找到了-域应立即应用。但如果属性未定义,则转到Symphony路由模块

注:别忘了在.env文件中设置
APP\u URL
。 例如:


您可以编写htaccess规则将IP地址重定向到域名。谷歌不应该缓存301/302重定向页面。谢谢,我会尝试将其作为临时解决方案,但我仍然需要修复/调查
route()
问题。你对.env变量中的APP\u URL有什么看法?我参加聚会有点晚,但我也有同样的问题。与此同时,你找到解决方案了吗?@gregory似乎有一个bug,或者laravel故意在路由生成中不使用APP_URL。在构建绝对URL的路由URL生成器中,laravel使用symfony getBaseUrl返回请求基URL,而不是应用程序URL中的内容。因此,基本上,如果您缓存URL,并且某些bot将通过IP地址到达您的服务器,那么最终将得到基于IP的URL,唯一的解决方案是以特定于域的方式管理缓存这是愚蠢的,但我没有看到任何其他的解决方案。Laravel应该处理这个问题,因为它应该使用APP_URL来构建URL,我经常以错误的URL结束,因为我使用缓存,一些机器人通过IP访问我的网站,ofc我可以更改我的服务器配置,但我想知道为什么Laravel不处理这个问题。
APP_URL=https://mysimpledomain.ua