WordPress优化篇
一、wordpress更新失败‘C:\Windows\TEMP/wordpress.tmp’,更换临时保存路径的解决办法
1、如果可劲进入远程桌面,则给C:\WINDOWS\TEMP目录设置IIS访问权限。
2、虚拟机的方法:首先用FTP软件在网页空间wp-content目录中新建一个【tmp】目录,然后在wp-config.php文件中加入下面中间的那部分:
/** WordPress目录的绝对路径。 */
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
/** WordPress的临时目录。 */
define('WP_TEMP_DIR', ABSPATH . 'wp-content/tmp/');
/** 设置WordPress变量和包含文件。 */
require_once(ABSPATH . 'wp-settings.php');
二、 WordPress 伪静态规则(IIS/Apache/Nginx)
不少朋友总是询问 WordPress 如何添加伪静态规则,今天倡萌就总结一下 IIS/Apache/Nginx 三种环境下的伪静态规则,希望对大家有所帮助。
检测主机是否支持伪静态的方法:在WP后台 > 设置 > 固定链接,设置为 非默认带?的那种结构,然后访问任何一篇文章,如果出现 404 错误,说明你的主机当前不支持 WordPress 伪静态。
IIS伪静态规则
IIS 环境是 Windows 主机常用的服务器环境,新建一个 txt 文件,将下面的代码添加到文件中:
[ISAPI_Rewrite]
# Defend your computer from some worm attacks
#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /tag/(.*) /index\.php\?tag=$1
RewriteRule /software-files/(.*) /software-files/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
然后另存为 httpd.ini 文件,上传到WordPress站点的根目录即可。
Apache伪静态规则
Apache是 Linux 主机下常见的环境,现在一般的 Linux 虚拟主机都采用这种环境。新建一个 htaccess.txt 文件,添加下面的代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
然后上传到 WordPress 站点的根目录,重命名为 .htaccess 即可
Nginx伪静态规则
Nginx环境一般是Linux 主机 VPS或服务器用户用的比较多,这些用户一般都会自己配置Nginx,或者有专门的人帮你配置,打开 nginx.conf 或者某个站点的配置环境,比如 wpdaxue.com.conf(不同人配置的不一样),在 server { } 大括号里面添加下面的代码:
location / {
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
保存,重启 Nginx 即可。
题外话:倡萌一直不推荐在 windows 的IIS服务器下安装 WordPress,因为 IIS 环境运行php程序的效率,相对同等配置下 Linux 的 Apache 和 Nginx 环境,要低的多,具体可以看https://www.wpdaxue.com/wordpress-rewriterule.html
三、谷歌字体替换国内资源
原因:这是由于Wordpress系统默认使用谷歌字体,在国内谷歌域名被屏蔽,所以导致操作反应慢。对于很多商业主题默认使用了谷歌字体、谷歌ajax库、谷歌地图等谷歌服务,所以导致网站前台访问速度慢。
原理:googleapis.com被屏蔽,但谷歌这些库的确是好东西,国内360给予镜像,地址是useso.com,内容与谷歌的一样,国内速度快。
找到Wordpress这个文件 \wp-includes\script-loader.php,找到:fonts.googleapis.com,全部替换成:fonts.useso.com。或者干脆把“googleapis”替换成“useso”。对于前台:近期测试了很多替换插件,网上推荐的大部分已经不管用了,后来发现这个最有用,而且更新比较勤:“Useso take over Google”,近几个月测试只是这个最好用。
四、移除不必要的信息,如WordPress版本
移除不必要的信息可以更好的保证wordpress的安全。可以找到模板文件夹里面的 functions.php 文件,将下列代码加进去。
remove_action( 'wp_head', 'wp_generator' ) ;
remove_action( 'wp_head', 'wlwmanifest_link' ) ;
remove_action( 'wp_head', 'rsd_link' ) ;
五、禁止浏览wordpress文件夹目录
将下列代码加入根目录下的 .htaccess 文件夹。同时,确保在wp-content/themes 和 wp-content/plugins各有一个空白的 index.php文件。
Options All -Indexes
六、取消WordPress评论框下的”HTML 标签和属性
WordPress评论框里面可以添加一些html标签,但这经常会导致大量的垃圾链接,并且可能会引发安全隐患。建议将下列代码加入到模板的 functions.php 文件来取消该功能。
add_filter( 'pre_comment_content', 'wp_specialchars' );
七、关闭WordPress的版本修订功能
WordPress会自动保存文章的各个修订版本,如果文章量大,且文章经常修改的话,会导致数据库变得臃肿,建议取消。可将下列代码放置到WordPress根目录下的 wp-config.php 文件,来取消版本修订功能。
define( 'WP_POST_REVISIONS', false);
当然,你也可以通过下面的代码来限制wordpress修订版本保存的次数:
define( 'WP_POST_REVISIONS', 3);
八、修改wordpress自动保存的时间
wordpress的自动保存功能默认每分钟保存一次,保存的瞬间,浏览器基本会处于假死的状态。你可以通过下面的代码来修改wordpress自动保存的时间间隔。
define( 'AUTOSAVE_INTERVAL', 120 );
九、隐藏二级RSS地址
WordPress 默认有多个RSS地址,如文章rss,评论rss,整站rss,评论rss,甚至分类rss,存档rss等。使用rss阅读器订阅的时候,读者很容易被这么多的rss搞糊涂。建议只发布整站的rss,可以用将下面的代码放到模板的 functions.php 文件实现。
emove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
将所有的RSS地址转向主RSS地址
在上一点,我们仅仅是从模板移除部分rss地址,但实际上这些rss是仍然存在的。可以通过将下面的代码加入 .htaccess 文件,来将各个RSS地址转向主RSS地址。记得将里面的RSS链接换成你自己的。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} !^.*(FeedBurner|FeedValidator) [NC]
RewriteRule ^feed/?.*$ http://feeds.labnol.org/labnol [L,NC,R=301]
十、隐藏wordpress登陆界面的错误提示
wordpress默认的登陆界面,会提示你密码错误,还是用户名错误。但这很容易被黑客利用来暴力破解密码,因此,有必要隐藏这个提示,将下列代码加入到 functions.php 文件就可实现。
function no_errors_please(){
return 'GET OFF MY LAWN !! RIGHT NOW !!';
}
add_filter( 'login_errors', 'no_errors_please' );
十一、 删除所有不用的模板和插件
删除所有不用的模板和插件,一来可以节省空间,二来可以减少对服务器的压力,三来,也可以减少一些引发漏洞的可能。
十二、停用wordpress的链接猜测功能
WordPress 有一个很奇怪的功能,假如一个人从外部链接进入 blogunion.org/hello 这个链接,如果你的网站已经将该链接移除,他会转到具有相类似词组的页面,如 blogunion.org/hello-world 。
如果你想直接以404错误页面来代替这个功能,你可以将以下代码加入到wordpress模板里面的 functions.php 文件。
add_filter('redirect_canonical', 'stop_guessing');
function stop_guessing($url) {
if (is_404()) {
return false;
}
return $url;
}
十三、让访问者缓存wordpress页面内容
让访问者缓存wordpress页面内容,这样读者就能更快速的载入你的站点。你可以通过将以下的代码加入到 .htaccess 文件,或使用wordpress缓存插件WP Super Cache、Hyper 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"
十四、禁用wordpress后台文件编辑功能
wordpress默认是管理员登陆后,可以直接在后台修改wordpress模板和插件等文件。但对于很多不熟悉wordpress的人来说,很可能一个修改错误,整个网站都崩溃了。如果你是帮别人维护wordpress,而那个人又是个菜鸟。那么你会非常需要这个功能。你可以将下面的代码加入到 wp-config.php 文件来实现。
define( 'DISALLOW_FILE_EDIT', true );
十五、移除链接里面的动态参数
因为各种各样的原因,经常会出现vzcs.vip/?ref=xxxx这样的链接。这对于SEO是不利的,会降低链接的质量。你可以通过将以下代码加入到 .htaccess 文件来移除这些参数。
RewriteEngine On
RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !^p=.*
RewriteCond %{QUERY_STRING} !^s=.*
RewriteCond %{REQUEST_URI} !^/wp-admin.*
RewriteRule ^(.*)$ /$1? [R=301,L]
十六、 推荐安装的插件
WP-Optimize
WP-SmushIt
WP Super Cache
Nofollow for external link
十七、部署CDN,有条件部署OSS
对于流量比较大的网站建议部署CDN与OSS,减少服务器压力,进行生成伪静态,减少服务器的压力,