Drupal 遷移屬於那種能安穩待在下一季計畫裡的專案,直到某個日期讓它變得急迫。眼前正有兩個日期在做這件事,而其中只有一個還沒到來。

Drupal 7 已於 2025 年 1 月 5 日失去官方支援。任何還在跑它的網站,已經一年多沒有任何資安保障了。Drupal 10 將在 2026 年 12 月 9 日走到生命週期終點,正好是 Drupal 12 推出的同一週,此後它不會再收到任何形式的釋出版本。如果你正處在這兩個版本之一,問題已經不是要不要動,而是走哪一條路、要花多少錢。

你現在的位置: 從 Drupal 10 到 Drupal 11 是一次真正的升級,同一個網站原地更新,通常兩到六週。從 Drupal 7 到 Drupal 11 根本不是升級,而是一次帶著內容遷移的重建,通常需要三到六個月。把這兩件事混為一談,是這個領域裡最昂貴的錯誤,因為 Drupal 7 網站常常按升級報價,接著超支到四倍。


兩種截然不同的遷移

遷移這個詞,罩住了除了名字之外幾乎毫無共通點的兩份工作。

Drupal 10 到 11 是升級。 架構不變。你的實體、欄位、檢視與設定都會跟著走。工作重心是相依套件的管理:確認每一個貢獻模組都有相容 Drupal 11 的釋出版本,把自訂程式碼裡已淘汰的介面呼叫清乾淨,再挪到仍受支援的 PHP 版本上。這件事比較像細膩而非困難,維護良好的網站兩週左右就能收工。

Drupal 7 到 Drupal 11 是重建。 Drupal 8 用 Symfony 元件重寫了整個平台,換掉了模組介面、佈景主題層與設定系統。除了內容之外沒有任何東西會自動過來,而內容本身也是透過一套專門打造的遷移流程過來的,而不是某支升級指令稿。你原本的模組已經不存在了,佈景主題必須用 Twig 重寫,自訂程式碼要在另一套架構上重新實作。

第二種情形正是 Drupal 7 網站拖了這麼久的原因。誠實的說法是,你不是在升級一個網站,而是在蓋一個新網站,然後把內容帶過去。


每一條 Drupal 遷移路徑的成本

下面的數字假設英國代理商的費率,以及一個複雜度中等的網站。這裡說的複雜度指內容型態、貢獻模組與自訂模組的數量,而不是頁面數量。

Drupal 10 到 11,維護良好的網站。 兩到四週,大約 6,000 至 15,000 英鎊。這是幸運的情況:模組都是新的,自訂程式碼不多,主要工作是測試。

Drupal 10 到 11,長期失修的網站。 四到八週,大約 15,000 至 35,000 英鎊。這裡的攔路虎是沒有 Drupal 11 版本的貢獻模組、針對已被移除介面寫下的自訂程式碼,還有同樣必須往上挪的 PHP 版本。每一個被棄置的模組都變成一次抉擇:找替代品、自己接手維護,或者把它的行為重新實作一遍。

Drupal 7 到 Drupal 11。 三到六個月,常見區間是 40,000 至 120,000 英鎊,規模大或改動多的網站還會更高。區間這麼寬,是因為它本質上是一筆重建預算。內容遷移本身往往是比較小的那一半;佈景主題、客製功能與外部整合才是比較大的那一半。

從 Drupal 7 換到別的平台。 有時這才是正確答案。如果當初選擇 Drupal 的理由已經不再成立,例如網站如今實際上只是一個附帶部落格的行銷網站,那麼換到更簡單的方案,可能比在 Drupal 內部遷移更省錢,往後的營運成本也會下降。我們關於 WordPress 與客製開發 的比較說明了這條界線落在哪裡,而 Drupal 網站開發指南 也坦率地寫了 Drupal 不適合的場合。


為什麼貢獻模組決定你的工期

幾乎每一份 Drupal 升級估算,都成敗於貢獻模組的盤點,而這也是最值得先做的一件事。

把網站用到的每一個貢獻模組列出來,逐一檢查是否存在與目標版本相容的穩定釋出版本。你會發現結果落進四類。有些已有相容版本,什麼都不必做。有些有候選版本或問題佇列裡的修補檔,可以透過 Composer 套上。有些已被棄置,你必須找替代品、自己接手這個模組,或者用自訂程式碼取代它的功能。還有些已被併入 Drupal 核心,這是整個盤點過程裡讓人高興的意外。

這次盤點把一個含糊的專案變成一個可以計數的專案。在它完成之前,任何報價都是猜測;沒有做盤點就給固定價的廠商,要嘛加了很厚的餘裕,要嘛正準備接連提出變更需求。

同樣的邏輯適用於自訂模組,只是工具不同。Drupal 的淘汰偵測工具會掃描自訂程式碼,回報那些已被移除或即將被移除的介面呼叫,把我們有一些自訂程式碼這句含糊的話,變成一份帶檔名與行號的具體清單。


實際上會出什麼問題

有幾種失敗模式,幾乎在每一次 Drupal 遷移裡都會重演。

環境之間的設定漂移。 如果改動是直接在正式站台的後台裡做的,而不是匯出成設定檔,那麼你的測試環境就不是忠實副本,測試的價值也比你以為的低。在遷移進行到一半時才發現這一點很常見,而且總是要付出時間。

從來沒有大家以為的那麼整齊的內容。 Drupal 7 網站常常以無人記錄的方式堆積內容:欄位被挪作他用,一個分類詞彙表在充當工作流程狀態,內文欄位裡黏著帶行內樣式的 HTML。一次遷移會把這些一次全翻出來,每一處都需要一個知道內容用途的人來拍板。

媒體與檔案處理。 Drupal 處理媒體的方式在 Drupal 7 之後有過很大變動。檔案、圖片樣式與嵌入媒體很少能一對一對應,媒體庫龐大的網站應當為這一項單獨編列預算,而不是假定它隨內容遷移免費附送。

網址與搜尋排名的延續性。 這一條傷的是生意而不是進度。如果網址別名變了卻沒有轉址,你就會失去舊網站掙來的排名。每一次遷移都需要一份完整的網址清單、一張重新導向對照表,以及上線之後的驗證。我們那篇談如何遷移網站而不流失流量 的指南詳細講了這個過程,它適用於換平台,就像適用於換網域一樣。

多語系內容。 如果網站以多種語言運作,那就要預期遷移會明顯更久。語言處理在 Drupal 7 之後被重建過,翻譯後的內容、翻譯後的設定以及依語言劃分的網址規則,各自都需要單獨照看。


工作該按什麼順序排

順序比多數團隊預想的更重要,排錯了就會重工。

先做貢獻模組與自訂程式碼的盤點,在任何估算之前。接著把網站挪到受支援的 PHP 版本,以及目前大版本的最新釋出版上,因為這會從真正的升級過程中剔掉一整類雜訊。到那時才去嘗試跨大版本這一步。

在舊環境旁邊架起新環境,而不是原地升級。這樣你才有地方反覆演練內容遷移,而你一定會需要,因為遷移在真正跑一次之前,會先被跑很多次。

把內容遷移當成程式碼來對待。Drupal 的遷移框架允許你把遷移定義寫在設定裡並反覆執行,也就是說你可以清空重來、調整對應關係、再跑一次。那些不去修遷移定義,而是在新網站裡手動修內容的團隊,最後會落到無法重跑的地步,從那之後舊網站上一處小小的內容改動,就變成一次人工對帳。

最後,在接近尾聲時安排一段內容凍結,並且盡量短。凍結拖得久,編輯就會繞過你,於是恰好產生了你本想避免的那種漂移。


要不要徹底離開 Drupal

這是個合理的問題,它值得一個誠實的答案,而不是一句辯護。

當初選擇 Drupal 的理由如果依然成立,就留下來:複雜的內容建模、細緻的權限控管、多語系需求、繁重的編輯流程,或者無障礙與公部門方面的義務。Drupal 在這些方面確實很強,而且從現在起的升級路徑已經穩定,大版本週期兩年一次,可以預期。

當網站已經離那些需求越來越遠時,就該考慮換。相當多的 Drupal 7 網站如今實際上只是一個附帶最新消息與聯絡表單的行銷網站。把這樣的網站放在 Drupal 內部遷移,等於為你早已不用的能力付重建的錢。

這個決定應當取決於內容模型與編輯工作量,而不是你的開發者偏好哪個平台。如果沒有人能說清楚 Drupal 為你做了哪些更簡單的平台做不到的事,那本身就是一條資訊。


先做盤點,再談報價

Mecanik 把 Drupal 升級與遷移放在我們的網站開發服務 之下承接。我們從貢獻模組與自訂程式碼的盤點開始,因為正是它把一個沒有邊界的專案變成一個確定的範圍,而且即便你之後把工作交給別人,這份盤點也值得擁有。

對 Drupal 10 網站來說,明智的做法是現在就規劃邁向 Drupal 11 的那一步,而不是等到十一月,那時所有人都在做同一件事。對 Drupal 7 網站來說,資安狀況本身已經是充分的理由。如果你的瓶頸是人手而不是能力,我們關於招聘 Drupal 開發者 的指南講了該看哪些面向。

告訴我們你在哪個版本上,網站大約用了多少貢獻模組與自訂模組,我們會告訴你,上面這些路徑裡你實際面對的是哪一條。


相關文章: 遺留 PHP 現代化:2026 指南Symfony vs Laravel 2026:該選哪個 PHP 框架API 安全:2026 年如何保護一個公開 API英國醫療及醫療保健網站開發 2026


常見問題

Drupal 10 什麼時候停止支援? Drupal 10 將在 2026 年 12 月 9 日走到生命週期終點,正好是 Drupal 12 推出的同一週。該日期之後它不會再收到任何釋出版本,資安修補也包含在內。因此,仍留在這個版本上的網站等於在無支援狀態下運作。

一次 Drupal 遷移要花多少錢? 維護良好的網站從 Drupal 10 升級到 11,通常需要 6,000 至 15,000 英鎊。如果模組與自訂程式碼長期失修,費用會升到 15,000 至 35,000 英鎊。從 Drupal 7 到 Drupal 11 是帶內容遷移的重建,常見區間是 40,000 至 120,000 英鎊甚至更高。

為什麼從 Drupal 7 到 Drupal 11 貴這麼多? 因為那根本不是升級。Drupal 8 用 Symfony 元件重建了整個平台,換掉了模組介面、佈景主題層與設定系統。模組必須更換,佈景主題必須用 Twig 重寫,自訂程式碼必須重新實作,內容則透過一套專門打造的遷移流程帶過去。

從 Drupal 10 升級到 11 需要多久? 如果網站的貢獻模組都是新的、自訂程式碼不多,兩到四週即可。若必須繞開被棄置的模組或已被移除的介面,則需要四到八週。讓估算變得可靠的,是事先完成的貢獻模組盤點。

我可以改成從 Drupal 遷到 WordPress 嗎? 有時這確實是正確的選擇,尤其當一個 Drupal 7 網站已經變成單純的行銷網站,不再需要複雜內容建模、細緻權限或多語系能力時。請依據你的內容模型與編輯工作量來決定,而不是依據平台偏好。