有一天,一位同仁跟我反應,他手上剛上線的一個 Laravel 多語系網站遇到很奇怪的問題:中文頁面收錄一切正常,但英文頁面卻完全進不了 Google 索引。網站內容明明完整,Sitemap 也提交了,卻遲遲沒有任何收錄跡象。出於好奇,我便幫忙檢查,結果一查,居然是語系網址的設定出了大問題……
👉 還不清楚 SEO 的基本原理?可以先看這篇 → 什麼是 SEO?別以為網站做完就好,排名關鍵在這裡,其實很多公司說『送 SEO』,通常只做到表面設定,遇到這類技術細節問題時,根本不會處理。

問題情境:英文頁面始終無法被收錄
以某 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_ENV與APP_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
- ❌ 錯誤網址範例:
https://www.example.com/public/en/about
🔧 解決步驟建議
- ・修正 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/開頭的多餘網址
這次的案例告訴我們,多語系收錄與伺服器設定細節息息相關。事實上,Laravel 還有其他類似的陷阱,例如 CSS 與 JS 路徑錯誤造成破版 👉 Laravel 網站破版怎麼辦?CSS 與 JS 路徑錯誤完整解決辦法
正確的語系網址部署方式
很多人以為「網站能打開」就沒問題,但事實上,
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 與收錄。
如果你也有相同問題,歡迎留言分享,或直接找我討論,
我可以幫你檢查並給出實際建議。






