Php

在 WordPress 網站上獲取 404,但只能從打開友好錯誤消息的 IE 中獲取

  • March 27, 2011

我在http://doubleabody.com/的任何連結上都收到 404 Page Not Found 錯誤(80% 的時間) ,但僅適用於 IE 瀏覽器,並且僅在“友好錯誤消息”打開時。進入 IE 設置並關閉“友好錯誤消息”,問題不會再出現。再次打開“友好錯誤消息”,問題就會再次出現,但只有 80% 的時間。除了IE,其他瀏覽器都沒有這個問題。到目前為止,我們在 IE8 和 IE9 中看到了這個問題。

當我說 80% 的時間時,我的意思是我在清除瀏覽器歷史記錄和記憶體後點擊連結並在 IE 中獲取 404 消息。但是然後刷新了 4 次,突然頁面就正常了。關閉“友好錯誤消息”,問題又回來了。我們在多種類型的 Windows(XP、Vista、Windows 7、Ubuntu Linux 上的 VM 中的 Windows Server 2008)上看到了這種情況。

此外,這只是大約 2 週前的最近一個問題。幾個月來,該網站在 a2hosting.com 上執行良好。到目前為止,a2hosting.com 仍在進行故障排除,他們也無法解決問題。

這是一個載入了 Pods CMS 的 WordPress 網站。除了 Pods CMS,它沒有其他外掛。我建構了一個自定義 WordPress 主題,然後使用 Pods CMS API 來拉入要顯示的內容。這將其從部落格轉變為小型企業網站。

該站點的 .htaccess 也是普通的 WordPress 品種。

更新1

根據@JeffAlbert 的請求,我正在顯示當我從 IE8 瀏覽器遇到 404 時錯誤日誌所說的內容。這是當我點擊首頁上一個名為“/map”的連結時。(請注意,我已經更改了 IP 地址以保護我的工作站。)請注意,第一次嘗試時,它失敗了。在第二次嘗試時,它通過了。

50.0.0.0 - - [25/Mar/2011:00:56:51 -0400] "GET /map HTTP/1.1" 404 9082 "http://doubleabody.com/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)"
50.0.0.0 - - [25/Mar/2011:00:56:59 -0400] "GET /map HTTP/1.1" 404 9216 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)"

現在,當我在 IE8 中關閉“友好錯誤消息”的情況下再次點擊 /map 時會發生這種情況,它一直很好地出現:

50.0.0.0 - - [25/Mar/2011:01:03:19 -0400] "GET /map HTTP/1.1" 404 9216 "http://doubleabody.com/liftgates" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)"

這是我在 Ubuntu Linux 中使用 Google Chrome 時的結果,它始終如一地工作:

50.0.0.0 - - [25/Mar/2011:01:07:20 -0400] "GET /about HTTP/1.1" 404 11801 "http://doubleabody.com/map" "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.151 Safari/534.16"

我在 WordPress 中編寫了一個自定義主題。它的工作方式是抓取到站點的所有連接並將其發送到主題的 index.php 文件。這將呼叫 WordPress 的 get_header()、get_sidebar()、顯示內容,然後是 get_footer()——標準的 WordPress 東西。

但奇怪的是,日誌反映的是 404 狀態。因此,在我的 index.php 中,我使第一行如下所示:

header(‘HTTP/1.1 200 OK’);

那時,Apache 日誌不再顯示 404,而是 200。現在 IE 中的問題不再出現。

所以,這就是我從這個問題中推測出來的。顯然,自 IE 出現以來,IE 就忽略了 404 條件。但上週,顯然我推測微軟為 IE7、IE8 和 IE9 引入了系統更新,導致它在 404 狀態標頭上立即停止,即使返回有效內容也是如此。通過我在主題中強制使用 200 標題,IE 不再看到 404 並看到 200。因此,沒有錯誤。

引用自:https://serverfault.com/questions/251673