2011-11-30 77 views
0

我想知道如何在使用mod_Rewrite的時候得到「真實」請求的U​​RL。在我的htaccess文件中有幾個用於緩存目的的重寫規則:首先檢查是否存在緩存文件。如果是這樣,請求將被重寫到緩存文件。否則,請求將被重寫爲一個php-script,它創建這個緩存​​文件。如何在使用mod_rewrite的時候得到真正的請求

但我懷疑,規則不符合我希望他們。是否有可能跟蹤「真實」請求查看,客戶端請求了哪個URL以及後臺請求哪個文件?

在此先感謝。

+0

只是一個模糊的內存......我想你可以使用mod_rewrite設置一個變量,稍後可以使用它。或者,有一個代表原始請求的內建變量。對不起,不記得清楚,但建議你閱讀手冊(長篇朗誦,但有幫助) – gahooa

回答

0

您可能需要%{THE_REQUEST}特殊變量。 mod_rewrite docs這樣說:

瀏覽器向服務器發送的完整HTTP請求行(例如「GET /index.html HTTP/1.1」)。這不包括瀏覽器發送的任何附加標題。與以下大多數其他變量不同,此值尚未未轉義(解碼)。

所以,如果有人進入http://your-domain/path/file.html到他們的瀏覽器,你的網絡服務器重寫/path/file.html成完全不同的東西,在%{} THE_REQUEST變量仍然會GET /path/file.html HTTP/1.1,或者類似的東西。

至於什麼請求終於得到了改寫,你可以啓用日誌記錄改寫,看看它是什麼:

RewriteLog /some-path/rewrite.log 
    RewriteLogLevel 9 

這會去你的虛擬主機配置和僅用於調試目的。 rewrite.log文件將包含重寫過程和最終URI的詳細信息。

+0

RewriteLog聽起來不錯,但據我所知,沒有可能通過.htaccess運行。 Unfortunatley我無法訪問httpd.conf或其他配置文件。 – Phil

相關問題