2013-08-29 183 views
0

當使用Apache的SetHandler強制所有內容請求通過PHP身份驗證腳本(Apache 2.2.15,PHP 5.3.3)時,我遇到無限循環問題。Apache SetHandler PHP腳本重定向循環

我的目標是讓PHP身份驗證包裝器驗證用戶試圖訪問站點內的任何內容。因此,在包裝程序重定向到目標文件之前,將通過PHP包裝器發送對/securesite/securefile.html或/securesite/securefile.png(例如)的任何請求。

這是Apache的配置:

DocumentRoot /data/www/default 
Action VerifyAuth /_auth/authenticate_test.php 
<Directory "/data/www/default/securesite"> 
    SetHandler VerifyAuth 
    Order allow,deny 
    Allow from all 
</Directory> 

測試認證PHP腳本/數據/ WWW /默認/ _auth):

<?php 
header("Location: ".$_SERVER['REQUEST_URI']); 
exit; 
?> 

測試目標文件是一個簡單的HTML文件(/ securesite /securefile.html):

<html><body>index.html</body></html> 

實際身份驗證腳本中有更多的深度,但我試圖在我解決問題時,可以將此問題分解爲最簡單的形式。

我試圖使用「php_value auto_prepend_file /data/www/default/_auth/authenticate_test.php」,但是這在刷新網站內的頁面時產生了問題。

使用這種方法創建了一個循環,瀏覽器將出錯。 Apache訪問日誌以「GET /securesite/securefile.html HTTP/1.1 302」的形式顯示對目標頁面的重定向嘗試。

任何想法是什麼導致這個循環和修復將是什麼?謝謝。

更新:我相信我已經解決(至少部分)通過刪除標題行強制重定向到預期的頁面,而只是'需要'的預期內容。

<?php 
require($_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI']); 
exit; 
?> 

我需要測試這樣做時,作爲各種內容,如SVN網站的包裝的影響...我現在要做的一些。

回答

0

更新:我相信我已經解決(至少部分)通過刪除標題行強制重定向到預期的頁面,而只是'需要'的預期內容。

0

把這個在您的添附文件的頂部

if (function_exists('ranAlready')) { 
    exit; 
} 
else { 
    function ranAlready() { 
     ; 
    } 
}