2011-10-19 44 views
2

這一個有點讓我困惑。Apache/Zend框架 - 錯誤日誌 - 頁面未找到

我使用Zend Framework運行LAMP服務器。我花了很多時間檢查我的錯誤日誌,嘗試清理任何編程錯誤/錯誤。

我的大部分站點特定錯誤都做,但我看着我一般Apache的錯誤日誌:

/var/log/apache2/error.log 

而且我看到了很多,幾乎是恆定的,錯誤「文件不存在」之類的以下(爲簡潔起見):

[date] [error] [client #:#:#:#] File does not exist: /var/www/sites/[website folder]/public/explore 
[date] [error] [client #:#:#:#] File does not exist: /var/www/sites/[website folder]/public/where-to-buy 
[date] [error] [client #:#:#:#] File does not exist: /var/www/sites/[website folder]/public/products 

依此類推。這些文件夾不存在,因爲所有的請求都會被重定向到index.php文件中並由Zend Framework處理。該實際控制人及其行爲的存在,使得任何人要:

http://www.example.com/explore 

http://www.example.com/where-to-buy/ 

將通過Zend框架得到正確的頁面。

但我不明白爲什麼所有這些錯誤發生?

如果認爲它可能與.htaccess文件有關,可將大多數請求(不包括樣式表,文檔,圖像等)重定向到index.php腳本。這就是我的樣子:

RewriteEngine On 
# make sure all requests go to 'www' sub-domain 
RewriteCond %{HTTP_HOST} ^example.com 
RewriteRule (.*) http://www.example.com/$1 [R=301,L] 

# Zend Framework, redirect requests to index.php 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

就是Apache試圖先解決通過實際目錄的請求,然後傳遞到index.php請求?哪些導致錯誤請求?

我也不確定爲什麼這會被轉儲到默認的錯誤日誌中,而不是錯誤日誌或特定的網站。換句話說,我有每個域的錯誤日誌,如「example.com_error.log」。這可能是這個問題的另一個跡象。這可能是一個順序問題,因爲「error.log」已經厭倦了「默認」網站。

感謝您的任何見解! Fozzy

+0

這可能是一個與htaccess的問題。你有沒有試圖合併這兩個主要條件?我的意思是,所有的請求被重定向到www版本和將重定向到index.php的版本? –

+3

事實上,這是去默認日誌實際上是一個很好的提示問題,檢查有關access.log。也許一些DNS名稱請求沒有在虛擬主機或網絡客戶端使用HTTP 1/1處理(所以沒有主機頭) – regilero

+0

有一點有趣的信息是,在日誌中也有引用鏈接,它們是來自我的網站:www.example.com。 – jmbertucci

回答

0

從Regilero:

這將默認的日誌的事實實際上是對問題的好提示 ,檢查相關的access.log。也許有些請求在你的虛擬主機沒有處理DNS名稱或Web客戶端不 使用HTTP 1/1(所以沒有主機頭)取得 - regilero 10月19日在'11 22:52

我能夠比較access.log和error.log來調查我的問題。

它是一段時間以前,但我相信這個問題是由於某些腳本直接通過IP地址到服務器,並嘗試使用虛擬託管域之一的目錄結構。