[英]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.