簡體   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