自動外鏈工具 在線排版工具 搜索引擎提交入口 wordpress主題推薦 批量打開網址工具 【老域名購買】 思享SEO導航 【網站合作】

WordPress博客HTTP頭信息優化

文章目錄
  1. 屏蔽多余的頭部信息
  2. 設置Modified

大家在做中文網站的時候應該都有接觸過百度站長工具吧,那么你關注過抓取診斷工具中返回的HTTP頭信息了嗎?如果還不知道這個那就out了。這里就不給大家補腦了,不懂得話可以自行百度,我今天要給大家發布是教程是如何清理由WordPress程序產生的一些我們不需要的HTTP頭信息,這些信息可能會對我們網站的安全以及SEO產生影響,沒有關注過的朋友可以重視一下哦!

屏蔽多余的頭部信息

X-Pingback

這一項會可能會暴露我們網站的真實路徑,對我們網站造成安全性問題,如果我們沒有使用WP的離線文章發布接口的話建議關閉這個功能,網絡上已經爆出了xmlrpc.php文件被黑客利用攻擊網站的新聞這里就不多說了。

清理X-Pingback信息

這一步呢需要分兩次進行,第一次我們先把WP的Pingback功能給禁用,然后我們以后發布文章都會自動關閉這個功能,我們可以通過下面的代碼快速禁用Pingback功能:

  1. //關閉?XML-RPC?離線發布功能
  2. add_filter('xmlrpc_enabled',?'__return_false');

如果我們只想屏蔽Pingback功能,讓離線發布還能繼續使用那么可以使用下面的代碼:

  1. //WordPress?關閉?XML-RPC?的?pingback?端口
  2. add_filter(?'xmlrpc_methods',?'remove_xmlrpc_pingback_ping'?);
  3. function?remove_xmlrpc_pingback_ping(?$methods?)?{
  4. ????unset(?$methods['pingback.ping']?);
  5. ????return?$methods;
  6. }

下面我們要對老文章做處理,清除舊文章的Pingback選項,這一步我們需要操作數據庫來實現:

  1. //使用SQL語句批量關閉Pingback功能
  2. UPDATE?wp_posts?SET?ping_status?=?'closed'?WHERE?post_date?<?'2017-11-24'

link

上面返回的兩條link信息Link: <http://www.nhkkdh.live/wp-json/>; rel="https://api.w.org/"這個是WP提供的一個開發式接口,一般我們也用不到;Link: <http://www.nhkkdh.live/?p=755>; rel=shortlink 這個是當前頁面的短鏈接,我們都知道一個頁面最好只有一個鏈接可以訪問到,對于這個短鏈接我們用不到不說還可能會影響到我們網站的SEO優化。

第一步屏蔽link頭部信息

這個屏蔽起來非常的簡單就是把WP相關的代碼給取消掛載,當然我們不會讓大家去修改WP的程序文件,因為難度太大。我們只需把下面的代碼添加到主題的functions.php文件中即可。

  1. //屏蔽WP產生的rel=shortlink頭部信息
  2. remove_action('template_redirect','wp_shortlink_header',11,0);
  3. //屏蔽WP自帶API產生的頭部信息
  4. remove_action(?'template_redirect','rest_output_link_header',?11,?0?);

我們可以把上面的代碼添加到functions.php文件中之后再到檢測工具中重新查詢看看link標簽是否消失了。

如果你的網站存在這些問題,那么我們下面的教程一定可以給你排憂解難。

通過上面的代碼我們網站頁面的HTTP返回的頭部信息頓時清爽了很多,下面就可以去給自己的網站做下診斷,有責改之,木有的話可以收藏一下,便于日后出現這種問題時及時應對哦!

原文:以上出自晨星博客

設置Modified

什么 304 Not Modified Header

客戶端(一般是瀏覽器)發送了一個帶條件的 GET 請求且該請求已被允許,而文檔的內容(自上次訪問以來或者根據請求的條件)并沒有改變,則服務器應當返回 304 Not Modified 這個狀態碼。

瀏覽器在請求一個文件的時候,發現自己緩存的文件有 Last Modified ,那么在請求中會包含 If Modified Since ,這個時間就是緩存文件的 Last Modified 。因此,如果請求中包含 If Modified Since,就說明已經有緩存在客戶端,只要判斷這個時間和當前請求的文件的修改時間就可以確定是返回 304 還是 200。

WordPress 中如何開啟 304 Not Modified Header

WordPress 作為一個 CMS 系統,如果每天更新的內容不多,對于未登錄的用戶來說,每次訪問同一個頁面,如果瀏覽器中已經有緩存,其實服務器無需再次生成一次頁面,直接返回 304 Not Modified Header,讓用戶直接查看瀏覽器中緩存即可。

那么在 WordPress 中如何給未登錄用戶開啟 304 Not Modified Header 呢?可以在當前主題的 functions.php 函數加入以下代碼:

  1. add_filter('wp_headers','wpjam_headers',10,2);
  2. function?wpjam_headers($headers,$wp){
  3. if(!is_user_logged_in()?&&?emptyempty($wp->query_vars['feed'])){
  4. $headers['Cache-Control']?=?'max-age:600';
  5. $headers['Expires']?=?gmdate('D,?d?M?Y?H:i:s',?time()+600)?.?"?GMT";
  6. $wpjam_timestamp?=?get_lastpostmodified('GMT')>get_lastcommentmodified('GMT')?get_lastpostmodified('GMT'):get_lastcommentmodified('GMT');
  7. $wp_last_modified?=?mysql2date('D,?d?M?Y?H:i:s',?$wpjam_timestamp,?0).'?GMT';
  8. $wp_etag?=?'"'?.?md5($wp_last_modified)?.?'"';
  9. $headers['Last-Modified']?=?$wp_last_modified;
  10. $headers['ETag']?=?$wp_etag;
  11. //?Support?for?Conditional?GET
  12. if?(isset($_SERVER['HTTP_IF_NONE_MATCH']))
  13. $client_etag?=?stripslashes(stripslashes($_SERVER['HTTP_IF_NONE_MATCH']));
  14. else?$client_etag?=?false;
  15. $client_last_modified?=?emptyempty($_SERVER['HTTP_IF_MODIFIED_SINCE'])???''?:?trim($_SERVER['HTTP_IF_MODIFIED_SINCE']);
  16. //?If?string?is?empty,?return?0.?If?not,?attempt?to?parse?into?a?timestamp
  17. $client_modified_timestamp?=?$client_last_modified???strtotime($client_last_modified)?:?0;
  18. //?Make?a?timestamp?for?our?most?recent?modification...
  19. $wp_modified_timestamp?=?strtotime($wp_last_modified);
  20. $exit_required?=?false;
  21. if?(?($client_last_modified?&&?$client_etag)??
  22. (($client_modified_timestamp?>=?$wp_modified_timestamp)?&&?($client_etag?==?$wp_etag))?:
  23. (($client_modified_timestamp?>=?$wp_modified_timestamp)?||?($client_etag?==?$wp_etag))?)?{
  24. $status?=?304;
  25. $exit_required?=?true;
  26. }
  27. if?(?$exit_required?){
  28. if?(?!?emptyempty(?$status?)?){
  29. status_header(?$status?);
  30. }
  31. foreach(?(array)?$headers?as?$name?=>?$field_value?){
  32. @header("{$name}:?{$field_value}");
  33. }
  34. if?(?isset(?$headers['Last-Modified']?)?&&?emptyempty(?$headers['Last-Modified']?)?&&?function_exists(?'header_remove'?)?){
  35. @header_remove(?'Last-Modified'?);
  36. }
  37. exit();
  38. }
  39. }
  40. return?$headers;
  41. }

該功能已經整合到 WPJAM Basic 插件中,現已免費提供下載,你只需要勾選下就可以自動添加!

上圖就是我愛水煮魚針對未登錄用戶開啟 304 緩存之后,用戶再次訪問同一頁面時候得到 304 Not Modified 狀態。

開啟 304 狀態,相應會帶來一些問題,比如用戶更新留言了,其他用戶可能會看不到,當然如果你要你用第三方評論系統,那就不存在這個問題,還有 Postview 會有一些統計不再計入等各種問題,你可以根據自己的需求開啟。

以上文字出自:我愛水煮魚

 

來源:本文由思享SEO博客原創撰寫,歡迎分享本文,轉載請保留出處和鏈接!
seo培訓評論廣告

2條評論

昵稱*

郵箱*

網址

七乐彩选号技巧