繁体   English   中英

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

[英]Laravel route() returning naked IP address instead of domain

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

route('homepage')有时会返回192.XX8.X.2XX192.XX8.X.2XX/index.phpdomain.com/index.php 我的页面在第一次访问时被缓存,并且页面上的所有 URL 出现异常的可能性大约为 50%。

这种奇怪的行为有没有解释,我该如何解决? 这是一个相当令人担忧的问题,因为 Googlebot 列出了我网站的三个额外副本。

注意:我也在我的路线中使用 LaravelLocalization 包: https : //github.com/mcamara/laravel-localization

我也在 Laravel Forge (Nginx) 下运行这个应用程序

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

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

查找函数mapWebRoutes 现在我们必须从我们的环境中添加带有配置的调用者domain

protected function mapWebRoutes()
{
    Route::middleware('web')
        ->namespace($this->namespace)
        ->domain(\Config::get('app.url', null))
        ->group(base_path('routes/web.php'));
}

在基于路由构建 url 期间 - 系统尝试获取当前路由中的局部变量domain ,如果找到 - 域应立即应用。 但是如果属性未定义 - 转到 Symfony 路由模块。

PS:不要忘记在 .env 文件中设置APP_URL 例子:

APP_URL=https://mysimpledomain.ua

这很可能取决于您的 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 如何处理请求的信息: http : //nginx.org/en/docs/http/request_processing.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM