2011-11-28 116 views
0

我想捕獲reforation url或完整的html鏈接 即「(http.bbserver.edu/john_doe/quiz.doc)」 並將其發送給PHP腳本。使用mod_rewrite RewriteRule將引用者傳遞到查詢字符串

我知道了小幅具有以下

REWRITERULE ([^/]+)/([^/]+)$ login.php?referer=%{HTTP_REFERER}&path=$0&folder=$1&file=$2 [NC,L] 

但PHP文件打印出這

Referer: 
path: John_Doe/quiz.doc 
folder: John_Doe/quiz.doc 
file: quiz.doc 

如果我試試這個,試圖得到一切,並將其發送到PHP腳本。

REWRITERULE ^(.+)$ login.php?referer=%{HTTP_REFERER}&path=$0&folder=$1&file=$2 [NC,L] 

但是php文件打印出來了。

Referer: 
path: login.php 
folder: login.php 
file: 

我想捕獲「HTTP_REFERER」並通過php解析子文件夾和文件。 但我沒有得到我需要的信息。

+0

因爲一起使用這與[赫利ISAPI重寫3](http://www.helicontech.com/isapi_rewrite/doc/RewriteCond.htm),當我跌倒在這裏也只是一個快速的注意:不是'%{ HTTP_REFERER}'它存在'%{HTTP:Referer}'。 –

回答

0

你肯定HTTP_REFERER被設置?通常情況下,如果您位於HTTP代理的後面,則不會。嘗試打印的$_SERVER['HTTP_REFERER']的價值,這也應該包含HTTP引用的值如果被設置。

如果您位於代理的後面,並且需要引用者,則可以使用mod_rpaf,並從HTTP_X_FORWARDED_FOR獲取引用者。

+0

我給我們打了電話。部門,我們不在HTTP代理之後。我在PHP腳本中打印這個值,它是空的。我需要啓用任何東西嗎? – David

+0

不在Apache,AFAICT。但它取決於客戶端:瀏覽器可以選擇不發送Referer:頭,以提高用戶的隱私。如果您只使用一個瀏覽器進行測試,請檢查該瀏覽器中的隱私設置,或嘗試使用其他瀏覽器和/或不同的客戶端主機。 –

+0

另外我創建了一個虛擬主機並將重寫規則保存在我們的.conf文件中。虛擬主機是否也會導致問題。另外有沒有其他的方法來獲得沒有mod_rewrite的引用者? – David