404 標頭錯誤而不是正確的 200
我剛剛通過 sftp/ssh 更新了一個(動態)網站,所有新頁面都被視為 404 錯誤未找到。實際上,所有頁面,包括被覆蓋的舊頁面。
此外,該網站正在使用 cloudflare。
讓我向您展示一個 URL 的捲曲:
curl http://example.com/something/ HTTP/1.1 404 Not Found Date: Tue, 26 Jan 2016 01:25:08 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Set-Cookie: __cfduid=de5a53a227295f9d9374fdf39bb45514f1453771507; expires=Wed,25-Jan-17 01:25:07 GMT; path=/; domain=.example.com; HttpOnly X-Powered-By: PHP/5.5.29 X-Pingback: http://example.com/folder-wp-blog/xmlrpc.php X-UA-Compatible: IE=edge Expires: Wed, 11 Jan 1984 05:00:00 GMT Cache-Control: no-cache, must-revalidate, max-age=0 Pragma: no-cache Set-Cookie: PHPSESSID=c72b8d6fc18775ef85ac8ab1b8bf6e95; path=/ Server: cloudflare-nginx CF-RAY: 26a86c0ee0f10f15-IAD
如您所見,curl 返回 404 錯誤。但是一個 URL 是活的,並且像魅力一樣工作。
我認為問題出在cloudflare上。所以,當我之前捲曲時,我“清除了所有東西”,但 404 仍然存在。我添加了一個自定義規則來繞過特定 url 上的 cloudflare 上的記憶體,但它根本不起作用。
另外,我認為這是我的 .htaccess 上的一些錯誤,我從那裡刪除了所有內容。我重新啟動了 apache,但 404 仍然存在。
結果,每個搜尋引擎和每個其他機器人都會看到 404 標頭。問題無處不在,除了 /index.html 和 /folder-wp-blog/ 文件夾中的 wordpress 部落格。這個WP根本沒有改變。因此,根目錄中的所有其他 html 和 php 文件都被標記為 404 …
有任何想法嗎?解決方案?
這些標頭表明該請求已經到達您的 PHP/Wordpress 安裝,因此問題就在那裡,而不是 CloudFlare:
X-Powered-By: PHP/5.5.29 X-Pingback: http://example.com/folder-wp-blog/xmlrpc.php
通過 SSH 連接到伺服器並從伺服器內部進行測試,將 CloudFlare 排除在外:
curl -H 'Host: example.com' http://127.0.0.1/something/
這將與請求http://example.com/something具有相同的效果,但需要 DNS 解析或通過 CloudFlare。
相同測試技術的變體將
/etc/hosts
在伺服器上更新並添加將 example.com 映射到 127.0.0.1 的行。然後可以curl http://example.com/something
從伺服器內部執行,請求首先通過 CloudFlare。您可能希望/etc/hosts
在伺服器上完成測試後刪除該條目,或者它可能被認為是一種有用的優化,也許還可以簡化WP-Cron
可能從自身內部回調伺服器的呼叫。如果您在瀏覽器中獲得不同的行為,
curl
則差異可能在於發送的 HTTP 請求標頭。使用 Chrome Inspector 等工具,仔細查看 Chrome 發送的請求標頭。例如,如果在 Chrome 中發送了一個 cookie 但沒有發送curl
,那可能會有所不同。平衡競爭環境的一種方法是使用不會發送先前瀏覽器 cookie 的“隱身”或“私人瀏覽”視窗。在 Chrome 網路檢查器中,您可以看到響應的伺服器的 IP 地址。與請求
dig +short example.com
來自的同一台機器上的執行相比。curl