[英]Laravel route() returning naked IP address instead of domain
在我的本地机器上没有发现这个,但我注意到我的一些页面返回了我的网络服务器的裸 IP 地址而不是域名。 例子:
route('homepage')
有时会返回192.XX8.X.2XX
或192.XX8.X.2XX/index.php
或domain.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.