跳至主要內容
Lizely

htaccess 轉 Nginx 工具

將一個刻意狹隘、可稽核的 Apache .htaccess 指令子集轉換為可供審查的 Nginx 指令,並揭露每一個條件或不支援的規則,而不是猜測。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.貼上一個聚焦的文件根目錄 .htaccess 摘錄,並僅轉換明確支援的指令子集。
  2. 2.審查每一行輸出,並針對每一個行號警告,手動對照 Apache 與 Nginx 檔案進行處理。
  3. 3.將結果整合至正確的 Nginx 上下文,備份目前設定,執行 nginx -t,並在重新載入前測試代表性請求。

關於htaccess 轉 Nginx 工具

Htaccess 轉 Nginx 小工具協助進行伺服器遷移的初步階段,並不假設 Apache 每目錄配置與 Nginx 配置可以互換。貼上一小段 .htaccess 範例,工具僅會輸出其窄範圍轉換協議所涵蓋的指令。任何條件式、不熟悉或語法模糊的內容,會搭配原始行號報告,供手動處理。處理過程皆在瀏覽器中進行,輸入內容不會傳送至 Lizely。

支援的重寫形式包含 Apache RewriteRule 模式、取代內容以及括號內的標誌清單。自動標誌集刻意限制為 L、R、R=301 與 R=302。永久重導向對應 Nginx 的永久標誌,暫時重導向轉為 redirect,內部最後規則轉為 last。未知標誌如 QSA、END、F、G、B 或 NC 則會中止該規則的轉換,因為其細節無法安全移除。

文件根目錄的 .htaccess 中,常見的模式通常是移除目錄字首後匹配路徑,因此常以 Caret 開頭但不帶斜線。Nginx 的重寫模式則會看到一個以斜線開頭的 URI。因此,轉換器會為支援的根目錄模式插入這個前導斜線。這是一種文件說明的範圍假設,並非適用於巢狀 .htaccess 文件、Alias 對映或特定位置 Nginx 塊的通用轉換。

RewriteCond 指令永遠不會自動轉換。Apache 的條件可檢視 HTTPS 狀態、主機名稱、檔案、目錄、查詢字串、標頭與捕獲的群組。其評估順序與伺服器架構有關。當一個 RewriteRule 位於條件之後,該工具會同時抑制該規則,而不是發出無條件重導向,以免改變流量、造成迴圈或暴露路徑。

Apache 中以單一連字元表示的無取代目標也將被保留。它常與改變存取或處理方式但不改變 URI 的標誌結合,而純文字連字元並非安全的 Nginx 替代方案。此警告為結果的一部分。一個靜默生成看似合理但不等價配置的轉換器,比一個留下明確工作內容的轉換器更具危險性。

支援三種非重寫對應。Options -Indexes 會轉換為 autoindex off,本機 ErrorDocument 404 路徑會轉換為使用相同路徑的 error_page 404,而加上引號的 X-Robots-Tag Header set 值則會轉換為一行 add_header 指令。其他狀態碼、外部錯誤文件、條件式標頭、環境變數和指令容器都需要手動移轉。

輸出為片段,而非完整的 nginx.conf。它不會建立 http、server 或 location 塊,也不會選擇監聽埠、設定 server_name、配置 TLS、定位文件根目錄、保留 PHP 路由、轉發代理或定義日誌。請根據 Nginx 官方指令文件與實際應用架構,將每個審查過的陳述句置於正確的上下文中。

該工具不會執行 nginx -t、檢查已安裝模組、發現 include 順序或讀取你的伺服器設定。一行語法正確的指令仍可能在上下文上錯誤。請備份目前的設定、維持開放的恢復會話、驗證整個組合配置,並在重新載入前先測試代表性請求。重新載入失敗或重導向迴圈可能導致公開網站無法使用。

永久重導向需要特別注意,因為瀏覽器與中繼可能快取它們。在實務上,應先在受控環境中使用暫時重導向,之後在測試舊路徑、新路徑、查詢字串、替代主機與 HTTPS 行為無誤後,才轉為永久重導向。請確認響應的 Location 頭資訊,而非僅依賴瀏覽器位址列。

八種外部元件涵蓋永久與暫時重定向、內部最後重寫、保留捕獲反向參考、已包含導slash的模式、目錄列表禁用、本機 404 文件與 X-Robots-Tag 標頭。負向測試證明條件、不熟悉旗標與無取代符號會產生警告且不產生預測輸出。

Apache 與 Nginx 使用不同的請求處理模型。Apache 的 .htaccess 是透過目錄發現的,且可能因 AllowOverride 被關閉。Nginx 則讀取集中式配置,並在重寫處理前選擇伺服器與位置情境。即使正規表示式相同,行為也可能不同,因為被匹配的字串、轉義、查詢處理與迴圈行為皆有差異。對每一個非平凡規則,請閱讀兩份官方手冊。

將此轉換工具作為清單輔助工具使用:貼上一個聚焦的片段,審查轉換數量,解決每一個警告,將結果整合至版本控制的 Nginx 檔案中,並在預測環境中驗證。若原始內容包含驗證、授權、熱鏈保護、代理邏輯、CMS 前控制器規則或複雜條件,應將遷移視為工程工作,而非簡單的文字替換。

方法與來源

解析器會逐行處理一段受限的內容,忽略 RewriteEngine On 的設定,保留註解,為受限的 RewriteRule 標誌集加入根上下文 URI 斜線,對映三個已記錄的簡單指令,並回傳帶行號的警告訊息,不會觸發任何條件判斷或未知規則。

常見問題

為何不轉換 RewriteCond 指令?
因為其變數、捕獲、評估順序與部署情境可能改變意義,因此工具會報告這些規則,而非生成不安全的無條件規則。
輸出是完整的 Nginx 設定檔嗎?
不是。它僅為一個可供審查的片段,適用於正確的 server 或 location 塊,並未定義 TLS、根目錄、上游或其它網站設定。
我可以複製後立即重新載入嗎?
不可以。請先備份設定,將其整合至正確上下文,執行 nginx -t,並先在預測環境或可逆的維護期間測試後,再重新載入。

SEO 與網站管理 使用指南

查看全部