Laravel 多語系網站收錄不到?Google 爬蟲無法解析的解決辦法

有一天,一位同仁跟我反應,他手上剛上線的一個 Laravel 多語系網站遇到很奇怪的問題:中文頁面收錄一切正常,但英文頁面卻完全進不了 Google 索引。網站內容明明完整,Sitemap 也提交了,卻遲遲沒有任何收錄跡象。出於好奇,我便幫忙檢查,結果一查,居然是語系網址的設定出了大問題……

問題情境:英文頁面始終無法被收錄

以某 Laravel 框架建置的多語系企業官網為例,中文頁面一切正常,但英文頁面卻始終無法被 Google 蒐錄。實際測試時,發現語系切換後網址出現異常:

🌐 多語系網址路徑異常示範

預期的英文首頁網址為:

https://www.example.com/en
  

但實際進入網站後,會跳轉至:

https://www.example.com/public/en/
  

且使用者繼續點擊其他英文選單時,網址仍持續夾帶 /public/,如下所示:

  • https://www.example.com/public/en/about
  • https://www.example.com/public/en/news

這樣的情況使得 Googlebot 在嘗試解析路徑時,無法正確辨識英文版區塊,導致整個英文站區被忽略。

問題排查過程:逐步檢查設定

為了確定問題來源,我們依照以下步驟進行排查:

🛠 Laravel 多語系網址錯誤診斷建議

🔍 檢查 .env 與 APP_URL 設定

  • ・確認 .env 中的 APP_URL=https://www.example.com不要指向 /public
  • ・檢查 APP_ENVAPP_DEBUG 是否設為正確的部署值(如 production / false)。

🔧 檢查 Laravel 路由與語系設定

  • ・開啟 routes/web.php,確認路由是否設定為 /en/... 而非 /public/en/...
  • ・檢查是否有使用 Route::group(['prefix' => App::getLocale()]) 並正確搭配語系中介層。

📊 比對其他正常網站案例

我們比對了另一家同樣使用 Laravel 並正常被收錄的網站(如 https://www.otherexample.com/en),
發現錯誤網站多出一層 /public,原因可能是語系切換時,缺少一個 「/」 導致網址被拼接錯誤為 /public/en/

問題根源:/public 目錄未正確處理

Laravel 預設的 public 目錄是靜態檔案與進入點所在,但若伺服器未正確設定,訪客與搜尋引擎會直接進入 /public 資料夾,進而影響 URL 結構。

🌍 正確的語系網址部署方式

正確做法應該是將 /public 指定為網站根目錄,讓語系路徑維持簡潔,避免影響 SEO 與收錄。

  • ✅ 正確網址範例:
    https://www.example.com/en/about
正確 Laravel 語系網址設定範例
  • ❌ 錯誤網址範例:
    https://www.example.com/public/en/about
錯誤網址拼接導致包含 public 路徑

🔧 解決步驟建議

  • ・修正 Laravel 路由,確保英文語系網址為 /en/...
  • ・在 robots.txt 中加入英文頁面:
User-agent: *
Allow: https://www.gdauto.com.tw/en/
Allow: https://www.gdauto.com.tw/en/about-01
  
  • ・手動修改 sitemap.xml,補齊英文頁面。
  • ・加入 canonical 標準網址:
<link rel="canonical" href="https://example.com/dresses/green-dresses" />
  
  • ・進入 Google Search Console,執行以下操作:
    • ・使用網址審查工具檢查英文頁面
    • ・重新提交 sitemap
    • ・移除 /public/ 開頭的多餘網址
Google Search Console 審查與重新索引畫面

正確的語系網址部署方式

很多人以為「網站能打開」就沒問題,但事實上,
Laravel 多語系收錄不到的真正原因,往往不是 Google 沒爬到,而是網址重複。

以這個案例來說:

狀況網址問題說明
正確網址https://www.example.com/en/about英文語系正式頁面,結構清晰
錯誤網址https://www.example.com/public/en/about多出 /public,實際是部署錯誤造成的「重複網址」

當 Googlebot 同時偵測到這兩個版本時,會視為重複內容(Duplicate Content),
甚至可能誤將 /public/en/about 當成主要版本,導致真正的英文頁面被忽略或延遲收錄。

🔧 Canonical 標準網址設定建議

在正確修正伺服器設定、移除 /public 之前,
可先在 <head> 加入 canonical 標準網址,告訴 Google 哪個版本才是主頁:

<link rel="canonical" href="https://www.example.com/en/about">

這樣即使 Google 已經抓到錯誤版本,也能理解哪個才是正式頁面,
避免搜尋結果中出現 /public 版本的網址。

但要強調的是:

canonical 只能「緩解」,不能「根治」。
最終仍應透過伺服器設定,將網站根目錄正確指向 Laravel 的 /public 資料夾,
確保前台網址結構完整、乾淨,這才是長期 SEO 收錄穩定的關鍵。

👉 你的多語系網站也遇到收錄不到的狀況嗎?

不管是 Laravel、WordPress 還是客製化網站,
都可能因為細節設定影響 SEO 與收錄。
如果你也有相同問題,歡迎留言分享,或直接找我討論,
我可以幫你檢查並給出實際建議。

填表讓我幫你檢查看看 →

返回頂端