安装WordPress之后要做的事情

这个应该是一篇老文章了,不过国内的翻译版似乎都不完整,显然作者依然在更新,我也更新翻译一下好了。

1、移出媒体上传目录

WordPress默认的上传图片和文件目录是wp-content/uploads,可以考虑将该目录移出WordPress主目录或是放到子域名下,这样的好处之一是可以单独备份上传的文件,之二是浏览器可以并行从不同域名下载图片,提升页面加载速度。

修改方式是打开wp-config.php文件,添加以下代码,并需要取消设置中的“按月和年组织上传目录”这个选项勾选。

define( 'WP_CONTENT_URL', 'http://files.domain.com/media' );
define( 'WP_CONTENT_DIR', $_SERVER['HOME'] . '/files.domain.com/media' );

2、从WordPress的代码头部移除不必要的meta标签

如果查看WordPress网站的源代码,有些meta标签其实是不必要的,例如版本信息还可能会对黑客有利。修改方式是在网站所应用的theme目录中,在functions.php文件添加以下代码。

remove_action( 'wp_head', 'wp_generator' ) ;
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
remove_action( 'wp_head', 'rsd_link' ) ;

3、不允许浏览目录

让浏览器无法浏览文件和目录,在WordPress安装目录的.htaccess文件中添加以下代码。

Options All -Indexes

然后在wp-content/themes和wp-content/plugins目录中放一个空的index.php文件(新版本已经存在)。

4、评论中禁用HTML

WordPress评论中是允许使用HTML标签和超链接的,有可能带来安全隐患,修改functions.php文件,加入以下代码。

add_filter( 'pre_comment_content', 'esc_html' );

5、关闭文章版本控制

WordPress中文章版本控制功能很有用,但是也会增加wp_posts表的大小,因为每次修改都会增加一条记录。禁用版本控制,打开wp-config.php文件,添加以下代码。

define( 'WP_POST_REVISIONS', false);

不过,比较好的方式是限制版本数量,例如以下代码就只保存最近的3次修改。

define( 'WP_POST_REVISIONS', 3);

6、修改文章自动保存时间间隔

在WordPress编辑器进行文章编辑时,为了防止浏览器崩溃造成信息丢失,会自动保存草稿,默认时间间隔是1分钟,在wp-config.php文件,添加以下代码可以将默认时间间隔修改为120秒,即2分钟。

define( 'AUTOSAVE_INTERVAL', 120 );

7、隐藏不必要的RSS Feed

WordPress安装会生成多个RSS Feed,包括文章、评论、分类、存档等等,并会在文章页面的HTML头部标签中自动产生,如果只是需要主要的RSS Feed,在functions.php文件中添加以下代码。

remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );

8、维护单一的RSS Feed,将其他重定向

上一步中只是在网站文件头部代码中移除了RSS Feed,但是实际上这些RSS Feed还存在,如果只需要保留一个RSS Feed而禁用其他的,修改.htaccess文件,注意要将其中feed的URL替换成自己的。

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

9、禁用WordPress登录提示

在WordPress登录界面输入错误的用户名或密码,会有详细的消息提示,可能会带来安全问题,打开functions.php文件,加入以下代码。

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

10、激活双因素认证

在这个不安全的时代,高度推荐采用双因素认证,虽然WordPress没有自带双因素认证,但是可以利用安装第三方插件激活,例如Authy、Clef、Google Authenticator和Duo Two-Factor Authentication。

11、修改固定链接结构

不使用SEO不友好的默认固定链接结构,可以在Settings -> Permalinks中修改为以下结构。

选项1:/%post_id%/%postname%
选项2:/%category%/%postname%/%post_id%/

12、添加Favicon和Apple Touch Icon

首先创建一个16×16 favicon.ico和144×144 apple-touch.png文件,上传到WordPress目录,然后在.htaccess文件中添加文件的重定向。

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

13、禁用索引WordPress脚本

要想让搜索引擎不索引文章之外的PHP文件,打开WordPress目录的robots.txt文件,添加以下代码。

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

14、设置Admin为Subscriber

安全起见,可以新建一个用户,赋予管理员权限,然后用新管理员登录,将admin用户设置为Subscriber。也可以删除admin用户,将其文章转给新用户。

15、向搜索引擎隐藏XML网站地图

XML格式的网站地图有利于搜索引擎抓取网站,但是也会在搜索结果中显示出来,修改.htaccess文件可以防止索引XML网站地图。

Header set X-Robots-Tag "noindex"

16、不使用WordPress搜索

WordPress搜索结果相关性并不好,而且会对数据库产生压力,所以最好使用Google的自定义搜索。如果仍然想使用WordPress搜索,推荐安装Nice Search插件,可以提供更好的结果页面。

17、使用密码保护wp-admin目录

对于wp-admin目录可以增加一层密码保护,

18、在Google Analytics中记录404错误

使用Google Analytics记录404错误,有助于改进网站服务。打开404.php文件,添加以下代码。

< ? if (is_404()) { ?>
_gaq.push(['_trackEvent', '404',
document.location.pathname + document.location.search,
document.referrer, 0, true]);
< ? } ?>

19、删除不需要的主题和插件

虽然不会影响WordPress网站的性能,但是从安全角度考虑,可以删除不再使用的主题和插件。

20、避免WordPress猜测URL

WordPress可以猜测URL,例如,如果用户请求labnol.org/hello页面,但是实际上该页面不存在,WordPress可能会重定向到labnol.org/hello-world,而不是404页面。要防止WordPress自作主张,打开functions.php文件,添加以下代码。

add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
if (is_404()) {
return false;
}
return $url;
}

21、为静态内容设置Expiry Headers

一些网站上的静态内容——图片、CSS和javascript——一般很少会有修改,可以设置Expiry Headers,让用户浏览器缓存,提高访问效率,可以参考HTML5 Boilerplate设置Expiry Headers。当然,如果使用了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安全

包括在wp_config.php文件安装secret keys,安装文件监控插件(Sucuri或WordFence),修改默认数据表前缀,限制登录试错次数防止暴力攻击。

23、禁用WordPress内部文件编辑

WordPress内部可以编辑插件和主题相关的PHP文件,要禁用此功能,打开wp-config.php文件,添加以下代码。

define( 'DISALLOW_FILE_EDIT', true );

24、移除URL中额外的查询参数

例如,网站是abc.com,用户在URL添加查询参数也可以进行访问,如abc.com/?utm=ga或是abc.com/?ref=feedly,这样会不利于SEO,修改.htaccess文件,防止在URL添加额外的查询参数。

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

25、移除Admin工具栏

登录状态下,网站顶部都会出现Admin工具栏,要取消这个工具栏显示,修改functions.php,添加以下代码。

add_filter('show_admin_bar', '__return_false');

26、处理广告屏蔽

如果用户使用广告屏蔽工具,可以使用插件提供文章列表或嵌入视频替换广告。

27、在RSS Feed中插入品牌

在RSS Feed中,为所有文章插入品牌logo,修改functions.php文件,添加以下代码。

function add_rss_logo($content) {
if(is_feed()) {
$content .= "

<hr />

<a href="blog_url"><img src="logo_url" /></a>";
}
return $content;
}
add_filter('the_content', 'add_rss_logo');
add_filter('the_excerpt_rss', 'add_rss_logo');

28、安装基本插件

以下是我推荐的基本插件,供参考,看原文吧,不翻译了。

http://www.labnol.org/software/must-have-wordpress-plugins/14034/

29、长期处于登录状态

WordPress默认的长期登录会保持2周时间,如果是个人计算机,可以修改functions.php文件,增加保持登录的时间。

add_filter( 'auth_cookie_expiration', 'stay_logged_in_for_1_year' );
function stay_logged_in_for_1_year( $expire ) {
return 31556926; // 1 year in seconds
}

30、移除WordPress的Emoji表情

如果不想使用WordPress的Emoji表情,修改functions.php文件,添加以下代码。

remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );

31、跟踪打印页面

使用Google Analytics跟踪网站的打印,当用户打印任何页面时,就会触发事件。在footer.php中添加以下代码,将googleAccountID替换为自己的。

<script>
 
var googleAccountID = "UA-1234-56";
 
function s4() {
    return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
}
 
function guid() {
    return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
 
(function(){
 
  var GIF = "https://ssl.google-analytics.com/collect?v=1&t=event" +
      "&ec=print&tid=" + googleAccountID + "&cid=" + guid() +
      "&z=" + (Math.round((new Date()).getTime() / 1000)).toString() +
      "&ea=" + encodeURIComponent(document.title) +
      "&el=" + encodeURIComponent(document.location.pathname);
 
  var rule = "body:after{content:url(" + GIF + ")}";
  var head = document.head || document.getElementsByTagName('head')[0];
  var css  = document.createElement('style');
 
  if (css && head) {
 
      css.setAttribute("type",  "text/css");
      css.setAttribute("media", "print");
 
      if (css.styleSheet) { // For IE
          css.styleSheet.cssText = rule;
      } else {
          css.appendChild(document.createTextNode(rule));
      }
 
      head.appendChild(css);
      
      /* Written by Amit Agarwal - labnol.org */
  }
 
})();
 
</script>

然后登录Google Analytics,在Real Time –> Events中选择Print进行查看。

原文:Things You Should Do After Installing WordPress