WordPress 网站优化 网站安全性

在你安装完 WordPress 后,你可能会调整一些设定来最佳化 WordPress 效能和安全性。这里有一份安装完 WordPress 后你应该做的最佳化指南。安装 WordPress 只需要两个简单的步骤,但你可能要调整一些预设的设定值,来改善、最佳化 WordPress 网站的效能和增强安全性。

如何最佳化你的 WordPress 网站?

这些建议只针对自架的 WordPress 网站,不适用于 WordPress.com 。另外,我假设你是在 Apache 上架设 WordPress 的。让我们开始吧:

1. 变更预设的媒体上传目录

WordPress 预设会将你的所有图片、文件和其他上传的档案储存于 wp-content/uploads 目录。

将你的图片储存于 WordPress 目录之外是个不错的作法,最好在一个子网域底下。这有几个优点,你的图片网址会更加简短,每日的 WordPress 备份会更有弹性,而且最重要的是,从不同的伺服器载入图片将有助于改善网页开啟速度。

WordPress 3.5(或更新版本) 已经没有提供变更预设媒体上传目录的选项,但可以使用插件来开啟这项设定。同时取消选择该选项–「将我所上传的档案安排为以 「月」 及 「年」 为基準的目录」 。

2. 从你的 WordPress 网站移除不必要的 meta-data

如果你检视过你的 WordPress 网站原始码,你可以发现有些 meta 标籤不是必要的。例如,你使用的 WordPress 版本会显示于原始码。

这项资讯对于一些寻找使用旧版或低安全性版本 WordPress 网站攻击的黑客来说是个不错的提示。从你的 WordPress 原始码完整移除掉版本号和其他非必要的 meta-data,只要把把这段程式码加入佈景主题的 functions.php 档案即可。

  • remove_action( 1wp_head1, 1wp_generator1 ) ;
  • remove_action( 1wp_head1, 1wlwmanifest_link1 ) ;
  • remove_action( 1wp_head1, 1rsd_link1 ) ;

WLW-Manifest 函式 (第二行) 是 Windows Live Writer 用于下载你 WordPress 部落格的样式、佈景主题。 Windows Live Writer 使用者不使用即时预览功能,故可以将此函式关闭。

3. 防止使用者直接瀏览你的 WordPress 目录结构

如果你不希望任何人直接瀏览你 WordPress 档案和资料夹清单,将以下代码加入你 WordPress 内现有的 .htaccess 档案中。

Options All -Indexes

并确认 wp-content/themes 和 wp-content/plugins 目录下包含空白的 index.php 档案。

4. 停用 WordPress 回响的 HTML 功能

WordPress 的回响留言框是一个小型的 HTML 编辑器,留言者可以使用一些标準的 HTML 语法像是 、、 来为自己的留言加入格式。他们甚至能够在留言里加入超连结。如果你想在 WordPress 回响里停用 HTML 功能,只要把以下程式码加入你的 functions.php 档案即可。

  • add_filter( 1pre_comment_content1, 1wp_specialchars1 );

5. 关闭 WordPress 文章版本功能

WordPress 内建一个实用的文章版本功能,让你可以追踪变化,以便随时回復到文章先前的版本。文章版本也会增加 WordPress 里 wp_posts 资料表的大小,因为每次修订都会增加新的内容。

要停用 WordPress 里文章版本的功能,开啟你 WordPress 目录下的 wp-config.php 然后加入以下程式码:

  • define( 1WP_POST_REVISIONS1, false);

另外,如果你想保留文章版本功能,你可以只限制 WordPress 储存于 MySQL 资料库里的修订数,在 wp-config.php 加入以下程式码:(3 为要保留的文章版本数量)

  • define( 1WP_POST_REVISIONS1, 3);

6. 变更文章自动储存的时间间隔

当你在 WordPress 内建的编辑器编辑部落格文章时,它会自动储存你的草稿,当瀏览器不幸当掉时,有助于你快速恢復先前输入的内容。草稿预设会每分鐘自动储存,但你可以加入以下程式码来将自动储存的时间间隔变更为 120 秒 (或 2 分鐘):

  • define( 1AUTOSAVE_INTERVAL1, 120 );

7. 隐藏其他 WordPress Feeds 网址

你的 WordPress 包含多个 RSS Feeds–部落格、文章、回响、分类、汇整等页面皆有 feeds–它们会使用标籤显示于你部落格的原始码内。

如果你只想宣传你的主要 RSS Feeds,那将以下程式码加入你的 functions.php 档案里:

  • remove_action( 1wp_head1, 1feed_links1, 2 );
  • remove_action( 1wp_head1, 1feed_links_extra1, 3 );

8. 将所有 Feeds 重新导向至你的主要 RSS Feed

在上一个步骤,我们只有从网页内移除掉不必要的 RSS Feeds,但这些 RSS Feeds 依然存在。如果你想要单独使用一个 RSS Feed 例如 FeedBurner,并停用所有其他的 Feeds,将以下程式码加入你的 .htaccess 档案。记得把 feed URL 替换为你自己的网址。

  •  RewriteEngine on
  •  RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
  •  RewriteRule ^feed/?.*$ http://feeds.freegroup.org/freegroup [L,NC,R=301]

9. 隐藏 WordPress 登入画面的错误讯息

 

当你输入一个不存在的使用者名称,或是错误密码来登入 WordPress 时,它会显示相当详细的错误讯息,来告诉你使用者名称错误,或是密码错误,这是狠糟糕的。

将以下程式码加入 functions.php 档案来隐藏所有登入相关的错误提示。

  • function no_errors_please(){ return 'GET OFF MY LAWN !! RIGHT NOW !!';}add_filter( 'login_errors', 'no_errors_please' );

10. 启用二阶段验证功能

 

强烈建议开启二阶段验证。如果有人取得了你 WordPress 帐号密码,他们仍需要你的手机才能够登入 WordPress 控制台。

不像 Dropbox 或 Google,WordPress 并没有内建二阶段验证功能,但你可以使用插件来将它加入。 Authy 是相当受欢迎的二阶段验证插件,虽然我喜欢的是 Authenticator,因为它可以搭配 Google 官方的 Authenticator 应用程式使用。

 

11. 变更固定网址结构

 

不要使用 WordPress 预设的固定网址结构,因为这不利于 SEO 。

前往 WordPress 控制台的设定 -> 固定网址来变更你的 WordPress 固定网址结构。从搜寻引擎最佳化及效能来看,建议使用的结构为:

  • /%post_id%/%postname%

12. 加入遗失的 favicon 及 touch icons

 

你的 WordPress 佈景主题可能没有包含网站图示 (favicon.ico) 或 Apple touch icons,但网页瀏览器和 RSS 阅读器仍然可能向你的伺服器要求这些档案。最好的办法是提供这些档案,而不是回传 404 错误。

在你的网站根目录放置一个 16×16 的 favicon.ico 和 144×144 的 apple-touch.png 档案。然后在你的 .htaccess 加入以下程式码来重新档向所有 Apple touch icon 的请求至特定档案。

  • RedirectMatch 301 /apple-touch-icon(.*)?.png http://upload.chinaz.com//

 

13. 禁止索引 WordPress 程式

 

你希望 Google 和其他搜寻引擎可以抓取你的部落格文章,但不会希望索引你用于 WordPress 、插件和佈景主题的程式。

开啟你 WordPress 主目录底下的 robots.txt 并加入以下代码,来阻止搜寻引擎索引 WordPress 后台的元件。

  • User-agent: *
  • Disallow: /wp-admin/
  • Disallow: /wp-includes/
  • Disallow: /wp-content/plugins/
  • Disallow: /wp-content/themes/
  • Disallow: /feed/
  • Disallow: */feed/

 

14. 把 Admin 权限设为读者

 

如果你的 WordPress 帐号是」admin」,建立一个新的使用者名称并给他系统管理员权限。接著登出 WordPress,以新的帐号登入,将 「admin」 权限从系统管理员设定为读者。

你也许可以考虑把帐号 「admin」 删除,然后将现有的任何文章、页面转移给新帐号。这对于安全性来说是相当重要的一个步骤,因为我们不希望让任何人有机会猜测具有 WordPress 管理员权限的使用者名称。

 

15. 对搜寻引擎隐藏你的 XML Sitemaps

 

XML Sitemaps 可以帮助搜寻引擎更好地抓取你的网站内容,但你不会希望搜寻引擎在搜寻结果页面显示你的网站地图。

将以下程式码加入你的 .htaccess 来防止 XML Sitemals 被搜寻引擎索引:

  • Header set X-Robots-Tag "noindex"

 

16. 不要使用 WordPress 内建的搜寻功能

 

确认你的网站搜寻功能是由 Google 自订搜寻所提供,不要使用 WordPress 内建的搜寻功能。

WordPress 搜寻通常会传回不相关的结果,另一个好处是这麼做能降低你的 WordPress 伺服器、资料库负载,因为搜寻查询将透过 Google 来进行处理。

另外,如果你打算继续使用 WordPress 内建的搜寻功能,那就使用 Nice Search 插件吧!它能为你的 WordPress 搜寻页面建立更好的固定网址 (/search/tutorials vs /s?tutorials) 。

 

17. 以密码保护你的 wp-admin 目录

 

你可以简单地为 WordPress 增加额外的安全防护,例如以密码来保护 wp-admin 目录。你必须要记住两组密码才能够登入至 WordPress – 包括你的 WordPress 密码,以及保护 wp-admin 目录的密码。

 

18. 在 Google 分析记录 404 错误

 

404 错误会错失使用者进入网站的机会。你可以使用 Google 分析来记录你的 404 错误,包含从何而来等细节资料。

将以下程式码加入你的 Google 分析追踪代码,于 _gaq.push 函式之后:

  • <? if (is_404()) { ?>
  • _gaq.push([1_trackEvent1, 14041, document.location.pathname + document.location.search, document.referrer, 0, true])2
  • <? }

 

19. 删除所有没用到的佈景主题和 WordPress 插件

 

未使用的插件和佈景主题不会影响你的 WordPress 网站效能,但我们的目标是尽可能减少伺服器上可执行的程式码。停用并删除所有你不需要的东西。

 

20. 停止 WordPress 猜测网址功能

 

WordPress 有一个会猜测网址的奇怪功能,且在大多数情况下会造成错误。让我解释一下,如果一位访客要存取 freegroup.org/hello 网址,但这个页面并不存在,WordPress 可能会把使用者重新导向至 freegroup.org/hello-world 只因为这网址有一些常用词汇。

如果你希望 WordPress 停止猜测网址,并以 404 找不到网页的错误讯息来取代,将以下程式码加入 functions.php:

  • add_filter(1redirect_canonical1, 1stop_guessing1)2
  • function stop_guessing($url) {
  • if (is_404()) {
  • return false2
  • }
  • return $url2
  • }

 

21. 为静态内容设定过期时间

 

储存于你 WordPress 网站的静态内容:像是图片、 CSS 、 JavaScript 、.txt 等等不会经常改变,你可以设定过期时间让它们快取于使用者的浏览器中。因此,在稍后访问网站的过程里,你的网站就能更快载入 JS 和 CSS ,因为是从本机的快取中被载入。

请参阅 HTML5 模版的 .htaccess 档案,来了解设定过期时间的细节。如果你是使用像是 W3 Total Cache 之类的快取插件,快取控制本身是由插件来做管理。

  • ExpiresActive On
  • ExpiresByType image/gif "access plus 30 days"
  • ExpiresByType image/jpeg "access plus 30 days"
  • ExpiresByType image/png "access plus 30 days"
  • ExpiresByType text/css "access plus 1 week"
  • ExpiresByType text/javascript "access plus 1 week"

 

22. 强化你的 WordPress 部落格安全性

 

我在早先已经详细讨论过 WordPress 安全性。大意是你应该把密钥加入你的 wp-config.php 档案,安装档案监控插件,然后使用 Limit Login 来防止暴力密码攻击。

 

23. 停用 WordPress 内的档案编辑功能

 

当你以系统管理员权限登入你的 WordPress 控制台,你可以轻鬆地编辑任何 WordPress 插件及佈景主题。如果你想删除文件的编辑功能 (一个缺少的分号可能让你的 WordPress 网站挂掉),将以下程式码加入 wp-config.php 档案中:

  • define( 'DISALLOW_FILE_EDIT', true );

 

24. 从网址中移除多餘的查询参数

 

如果你的 WordPress 网站网址是 abc.com,如果使用者在网址加入一些查询参数,仍然可以到达你的网站。例如,abc.com/?utm=ga 或 abc.com/?ref=feedly 就是,从技术上来说,完全不同的网址也可以进入相同的页面。

但对于链结权重 (SEO) 来说是不好的,在理想的情况下,你应该让所有网址指向同一个 Canonical URL 。将以下程式码加入 .htaccess 来移除掉不必要的查询参数:

  •  RewriteEngine On
  •  RewriteCond %{QUERY_STRING} !=""
  •  RewriteCond %{QUERY_STRING} !^p=.*
  •  RewriteCond %{QUERY_STRING} !^s=.*
  •  RewriteCond %{REQUEST_URI} !^/wp-admin.*
  •  RewriteRule ^(.*)$ /$1? [R=301,L]