2011-10-12 140 views
16

我想知道如何創建和調試這種腳本,如果你不習慣寫它們(像我一樣)會變得有點頭疼。如何調試htaccess重寫腳本

你使用工具來創建它們嗎?

任何提示調試正在發生的事情,而不是隻創建一個本地結構,看看瀏覽器中發生了什麼?

+0

可能重複http://stackoverflow.com/questions/9153262/ tips-for-debugging-htaccess-rewrite-rules) – Flimm

回答

1

您可以在虛擬主機配置中設置RewriteLog指令 它會將必要的信息寫入您指定的文件。

RewriteLog "/usr/local/var/apache/logs/rewrite.log" 

此外,使用RewriteLogLevel指令來控制記錄的

RewriteLogLevel 3 

read through

5
  1. 你可以使用任何正則表達式測試工具來幫助你對網址測試你的模式數量(我使用「正則表達式教練」 - Windows應用程序)。這隻會對模式有所幫助 - 您應該已經知道重寫的一般邏輯/流程。

  2. DEBUG你必須能夠修改Apache的配置文件 - 使用RewriteLogLevel 9RewriteLog /path/to/rewrite.log看到網址中正在發生的事情改寫具體細節(因爲它是一個服務器的配置,你將不得不重新啓動Apache有新的服務器配置應用)。如果你想調試有問題的規則。 3級或任何其他相當低的價值只會顯示你正在進行的概述,而不會涉及細節。

    請勿在繁忙/生產服務器上使用級別9,因爲它可能會在幾秒鐘內生成大量日誌。

  3. 如果你需要做的301(永久)重定向 - 而不是在測試期間做302(直到您滿意的規則和結果 - 然後換乘301)作爲現代的瀏覽器做緩存301個重定向..所以當你完全改變規則(甚至刪除它)但瀏覽器仍然重定向時,你可能最終陷入令人沮喪的境地。在這種情況下唯一的治療方法 - 清除瀏覽器緩存並重啓。

16

給讀者的提示:舊的答案不再適用

從版本2.4開始,Apache不再允許RewriteLogLevelRewriteLog指令。現在它們都與單個LogLevel指令(請參閱Log Files文檔)捆綁在一起,該指令支持帶有前綴和trace[1-8]常量的模塊特定日誌級別。要設置專門爲重寫模塊記錄的最高水平,你現在使用以下命令:

LogLevel warn rewrite:trace8 
【溫馨提示用於調試的.htaccess重寫規則(的
+0

在哪裏我可以賴特LogLevel警告重寫:trace8 htaccess –

+6

並在那裏看到日誌? – Umair