2012-10-06 79 views
2

我正在開發一個開源項目。我不知道該項目將安裝在最終用戶的目錄中。我需要爲爲我的項目創建的.htaccess文件添加規則,以便404和其他指向我的項目根目錄中的特定文件。安裝腳本在名爲「setup」的文件夾中調用,與root/setup/index.php等根文件夾相關。指向.htaccess文件

我使用直接從的.htaccess 404點的根到errorcode.php(也是在根文件夾)的路徑是這樣的:

$installURL = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']); 
$save= $installURL; 
$str = str_replace('/setup', '', $save); //remove /setup/ 
$installURL= $str ; 

我再打開.htaccess文件,並讓我的規則像這樣:

$fp = fopen("../.htaccess", "a"); 
fwrite($fp, "\n\n# ErrorDocuments \n"); 
fwrite($fp, "ErrorDocument 400 ". $installURL."/errorcode.php?error=400 \n"); 

這裏有所有400個HTTP頭文件的規則列表。

這對我來說已經工作了大約一個月了。今天,我開始變得服務器錯誤,和日誌文件說以下內容:

[Thu Oct 04 11:56:59 2012] [notice] cannot use a full URL in a 401 ErrorDocument directive --- ignoring! 
[Thu Oct 04 11:56:59 2012] [alert] [client 127.0.0.1] C:/wamp/www/Project-BlackHawk/.htaccess: Unsupported HTTP response code 428, referer: http://localhost/Project-BlackHawk/setup/index.php 

我的問題是,我應該使用這樣的路徑的ErrorDocument:

$installURL = dirname($_SERVER['SCRIPT_NAME']); 
$save= $installURL; 
$str = str_replace('/setup', '', $save); //remove /setup/ 
$installURL= $str ; 

回答

2

這聽起來就像您需要從您的ErrorDocument指令中刪除http://localhost部分一樣。所以$_SERVER['SCRIPT_NAME']可能會爲你做,那麼$_SERVER['REQUEST_URI']

+0

那麼就像我的問題的最後4行? – chriscct7

+0

@ chriscct7是的,那是有效的。 –

相關問題