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

填表讓我幫你檢查看看 →

返回頂端