在你安装完 WordPress 后,你可能会调整一些设置来优化WordPress 效率和安全性。这里有一份安装完 WordPress 后你应该做的优化指南。安装 WordPress 只需要两个简单的步骤,但你可能要调整一些默认的设置值,来改善、优化 WordPress 网站的效率和增强安全性。
如何优化你的 WordPress 网站?
这些建议只针对自己建立的 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( 'wp_head', 'wp_generator' ) ;
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
remove_action( 'wp_head', 'rsd_link' ) ;
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( 'pre_comment_content', 'wp_specialchars' );
5. 关闭 WordPress 文章修订版本功能
WordPress 包含一个实用的文章修订版本功能,让你可以追踪变化,以便随时恢复到文章先前的版本。文章版本也会增加 WordPress 里 wp_posts 数据库表的大小,因为每次修订都会增加新的内容。
要停用 WordPress 里文章修订版本的功能,打开你 WordPress 目录下的 wp-config.php 然后加入以下代码:
define( 'WP_POST_REVISIONS', false);
另外,如果你想保留文章修订版本功能,你可以只限制 WordPress 存储于 MySQL 数据库里的修订数量,在 wp-config.php 加入以下代码:(3 为要保留的文章版本数量)
define( 'WP_POST_REVISIONS', 3);
6. 更改文章自动保存的时间间隔
当你在 WordPress 内置的编辑器编辑博客文章时,它会自动保存你的文章草稿,当浏览器不幸挂掉时,有助于你快速恢复先前输入的内容。草稿默认会每分钟自动保存,但你可以加入以下代码来将自动保存的时间间隔更改为 120 秒(或 2 分钟):
define( 'AUTOSAVE_INTERVAL', 120 );
7. 隐藏其他 WordPress Feeds 网址
你的 WordPress 包含多个 RSS Feeds–博客、文章、评论、分类、标签等页面都有 feeds–它们会使用 标签显示于你的博客的html源代码中。
如果你只想宣传你的主要 RSS Feeds,那将以下代码加入你的 functions.php 文件里:
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 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%
爱创意使用的是
%postname%.html
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://example.com/apple-touch.png
13. 禁止索引 WordPress 程序,合理设置robots.txt
你希望 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 被搜索引擎索引:
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(['_trackEvent', '404', document.location.pathname + document.location.search, document.referrer, 0, true]); <? }
19. 删除所有没用到的主题和 WordPress 插件
未使用的插件和主题不会影响你的 WordPress 网站效率,但我们的目标是尽可能减少服务器上可执行的代码。停用并删除所有你不需要的东西。
20. 停止 WordPress 猜测网址功能
WordPress 有一个会猜测网址的奇怪功能,且在大多数情况下会造成错误。让我解释一下,如果一位访客要存取 freegroup.org/hello 网址,但这个页面并不存在,WordPress 可能会把用户重新导向至 freegroup.org/hello-world 只因为这网址有一些常用词汇。
如果你希望 WordPress 停止猜测网址,并以 404 找不到网页的错误信息来取代,将以下代码加入 functions.php:
add_filter('redirect_canonical', 'stop_guessing'); function stop_guessing($url) { if (is_404()) { return false; } return $url; }
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 插件及主题。如果你想删除文件的编辑功能(一个缺少的标点符号就可能让你的 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]