2008-10-03 67 views
1

我有一個網站,它使用PHP/Apache中的自定義404錯誤處理來顯示特定頁面。
例如http://metachat.org/recentPHP - 自定義錯誤處理。重定向的404被AVG反病毒軟件劫持。如何停止?

我感覺這是這樣做的好方法,但它是我繼承的代碼...

雖然頁面顯示正確的大多數瀏覽器,我得到的情況下AVG反病毒正在劫持該頁面並將其重定向到一個異地404頁面。

我試圖強行頭:使用PHP header命令(狀態200 OK),但如果我做網頁的捲曲-I,我得到以下...

HTTP/1.1 404 Not Found 
Date: Fri, 03 Oct 2008 11:43:01 GMT 
Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4 PHP/4.3.10-16 mod_ssl/2 
.0.54 OpenSSL/0.9.7e 
X-Powered-By: PHP/4.3.10-16 
Status: 200 OK 
Content-Type: text/html 

我想第一行是強制重定向的AVG陷阱行。 如果不重寫軟件以使用Mod_rewrite(我不太瞭解),我怎樣才能(在PHP中)在顯示這個頁面時停止頭部發送的「HTTP:/ 1/1 404 Not Found」行?

謝謝。

回答

4

除了使用URL重寫(mod_rewrite)或創建缺少的頁面,沒有辦法。發生什麼事是客戶請求一個不存在的頁面。 Apache配置爲在發生404錯誤時爲特殊頁面提供服務,但仍會發送404狀態代碼,然後AVG將其捕獲。

所以,你可以這樣做:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !-f 
RewriteCond %{REQUEST_URI} !-d 
RewriteRule (.*) index.php?missing_content=$1 

這將重寫不存在(並因此將給予404)一切你的index.php與在missing_content查詢字符串的URL路徑參數

4

如果你得到的是一個Page Not Found錯誤,不要使它發送狀態200 OK。請。

這是人們爲什麼原因最煩人的「訣竅」之一。如果頁面用戶請求不存在,請告訴他以及他的瀏覽器。而對於搜索引擎,否則將抓取/緩存您的自定義錯誤頁面認爲這是實際的響應。

如果有人某些軟件安裝,顯示的東西,而不是你的404一樣,這是他自己的問題,不要試圖打它使您的服務謊言到瀏覽器:)

0

一些瀏覽器不顯示如果內容很小,則爲404頁的內容。如果有更大的頁面內容,他們會顯示它。此規則因瀏覽器而異。嘗試向你的404頁面添加更多內容,看看是否有幫助。