使用 Nginx 反代 Apache 安装 WordPress

最近由于原先博客主机极度不稳定,所以准备了很久,准备进行主机迁移。由于迁移前的环境和迁移后还是有较大的区别,整体架构也不太一样,所以在这里说说迁移过程中遇到的问题。

环境对比

原主机 新主机
操作系统 CentOS 6 CentOS 7
Web 服务器 Apache 2.2 Openresty 1.9.7 + Apache 2.4
PHP 版本 5.5 5.6
其他 SELinux

SELinux

很多人为了省事,在拿到主机的第一时间就直接禁用了 SELinux。不过在学习了一段时间之后,我发现其实 SELinux 是一个很好的保护机器的手段。

这里简单列举几个需要注意的 SELinux 的配置:

 

httpd_can_network_connect_db boolean 类型,控制 Apache 是否可以连接 DB
http_port_t port 类型,控制 Apache 可以监听的端口
mysqld_port_t port 类型,控制 mysql 可以监听的端口和 Apache 可以连接的 DB 端口

由于我是将 Apache 作为只解析后端 PHP 请求使用,所以需要修改 http_port_t 加入我需要的端口。添加方法类似于:

semanage port -a -t http_port_t  -p tcp 8090

另外由于我没有在本机安装 Mysql 而是使用的远程 Mysql 实例,并且开放的端口并不是标准的 3306,所以需要将端口号添加到 mysqld_port_t 中。

Apache

这玩意是主要的坑所在。下面来一一列举。

配置格式变更

Apache 2.2 和 2.4 的配置文件区别还是比较大的,加了很多新的参数,同时修改了很多配置的方法。最明显的是:

Options -Indexes

Allow from all
Deny from all

这三条配置已经完全被改掉了。如果在配置中出现第一种,会直接起不来。后面的 Allow Deny 的写法虽然不会有问题,但是已经不是官方推荐的了,建议改掉。

配置无效

在配置 Apache 2.4 的 Log Format 的时候,我发现了一个很蛋疼的问题,就是 CentOS yum 安装的版本(2.4.6)有些配置是使用不了的。如:

http://httpd.apache.org/docs/2.4/mod/mod_log_config.html

这个文档中的:

%{UNIT}T	The time taken to serve the request, in a time unit given by UNIT. Valid units are ms for milliseconds, us for microseconds, and s for seconds. Using s gives the same result as %T without any format; using us gives the same result as %D. Combining %T with a unit is available in 2.4.13 and later.

很多参数都有类似的标注(available in 2.4.13 and later),告诉你在旧版本中不能使用。如果不仔细看的话很容易忽略。所以配置之前一定要仔细阅读。

HTTPS

WordPress

由于我的博客是全站 HTTPS 的,因此在 WordPress 上我是有做一些强制 HTTPS 的措施。但是!由于 WordPress 默认的检测 HTTPS 的方法是这样的:

/**
 * Determine if SSL is used.
 *
 * @since 2.6.0
 *
 * @return bool True if SSL, false if not used.
 */
function is_ssl() {
        if ( isset($_SERVER['HTTPS']) ) {
                if ( 'on' == strtolower($_SERVER['HTTPS']) )
                        return true;
                if ( '1' == $_SERVER['HTTPS'] )
                        return true;
        } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
                return true;
        }
        return false;
}

而我的 HTTPS 是在 Nginx 层做的,所以导致这两个条件均不满足,因此会遇到重定向循环(Redirect Loop)的问题。解决方法有两种:

修改 wp-config.php 文件:

if ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ( 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
    $_SERVER['HTTPS'] = 'on';
}

这里的修改需要配合修改 Nginx 的 Proxy 设置,增加下面这行:

proxy_set_header X-Request-Protocol $scheme; #http or https

修改 wp-includes/functions.php 文件(4025行左右):

找到上面说的那段代码,将其替换为:

/**
 * Determine if SSL is used.
 *
 * @since 2.6.0
 *
 * @return bool True if SSL, false if not used.
 */
function is_ssl() {
        if ( isset($_SERVER['HTTPS']) ) {
                if ( 'on' == strtolower($_SERVER['HTTPS']) )
                        return true;
                if ( '1' == $_SERVER['HTTPS'] )
                        return true;
        } elseif ( isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] ) ) {
                return true;
        } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && ( 'https' == $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
                return true;
        }
        return false;
}

同时这个修改方法也要配合修改 Nginx 的 Proxy 设置。

注意,虽然可以不做判断直接无脑 $_SERVER[‘HTTPS’] = ‘on’; 或者在那个 is_ssl() 方法中无脑返回 true,但是不建议这样修改。因为这样可能会导致安全上面的问题。

Apache .htaccess

由于我在某些目录中通过 .htaccess 的方式强制重定向了非 HTTPS 请求,因此在将 SSL 交给 Nginx 之后相关的跳转判断也要修改。原先的跳转逻辑是:

RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}/$1 [L,R]

由于 %{HTTPS} 这个变量判断的是 Apache 传进来的内部参数,我们无法控制,所以需要将这段修改为:

RewriteEngine on
RewriteCond %{HTTP:X-Request-Protocol} ^http$
RewriteRule   ^(.*)  https://%{SERVER_NAME}/$1 [L,R]

这里判断的就是 Nginx 传进来的 X-Request-Protocol 头了。不过这种写法并不能在单独使用 Apache 作为 Web 服务器的时候使用,需要注意。

客户端证书

目前只针对某目录或文件的客户端证书配置还没有测试完成,将在后面更新。

Embed Gists on your WordPress blog without a plugin

When I first started writing tutorial blog posts that involved posting code snippets I would add the code directly into the posts and use the SyntaxHighlighter Evolved plugin to render it readable on the front end. This sometimes worked, and sometimes didn’t.

Eventually I started using Gists on GitHub as public repositories for my code snippets, and installed a plugin on my site to embed and display the Gists in the blog posts. This worked okay, but it depended on a plugin.

Then I ran across a post by Christian Engvall (who cited Robert O’Rourke) with a way to embed Gists without a plugin, simply by placing the following code in your functions.php file or in a mu-plugin.

Gist – Embed Gists with a URL

Simply add the Gist URL to your post

With that code in place, all you need to do is add the URL of a Gist into your post (or page) on its own line and the Gist will be embedded in the post on the front end.

Remove your username from the Gist URL

Gist adds your username to the Gist URL, and if you leave that username in the URL in your post then it won’t embed the Gist – it will simply display the URL.

8个简单方法提升WordPress速度

WordPress是一个很棒的开源程序,几乎我认识的站长朋友当中,粗略估算有80%使用Wordpress。但很棒不等于完美,就在我所认识的这些朋友中,几乎所有人都会抱怨Wordpress太臃肿,运行效率太低了,大家有无同感?

所以,今天这篇博文和大家分享8个小贴士来提升WP的运行效率,如果您运用了这些方法后发现确实有帮助,请把这篇博文分享给更多的人好吧?当然为了尊重劳动成果,也烦请指明出处。

1、使用高效的缓存插件

WordPress的插件们是非常有用的, 我推荐一款缓存插件可以改善页面载入时间,它就是W3 Total Cache,有了这个插件之后咱就不再推荐你其他缓存插件了,因为所有缓存插件有的功能它都有了,而且安装和使用非常方便。

拥有这款插件之后,你的页面载入速度会加快,因为网站的主要元素已经被缓存了。

2. 使用内容分发网络 (CDN)

基本上所有你喜欢的大网站都会使用CDN。简单来说,CDN是把你站点上的文件们(CSS\JS\图片等)发布到最接近用户所在的网络区域,让用户就近下载,这样就能提高站点运行速度。在国内ChinaCache是比较有名的CDN供应商,不过价格贵了一些,像各大门户网站,比如腾讯、新浪、网易等等都是用ChinaCache。所以不管你在哪里,访问这些门户网站都会觉得速度很快。当然啦,对于小站来说,这个成本可能会高一些,

所以,你无论是在南方,或者北方,还是在北美,访问这些门户网站,感觉速度都很快,最主要的原因之一就是CDN发挥了效果。一般小网站是用不起这服务的,所以慢点就慢点了吧,可以租用互联互通的6线机房(6线机房是指包括网通、电信、铁通、移动、联通、教育网等多线接入的骨干网IDC机房,彻底消除各地网络瓶颈,保证互联网访问畅通无阻的高速机房。)

顺便提一下,还有一个Wordpress插件叫Free-CDN,号称也能达到类似的效果,虽然我还没有做过测试…

3、图片优化很重要

Yahoo! 有一个图片优化软件叫Smush.it可以最大程度无损压缩图片,不过,除非你超级有耐心,否则一张张压缩图片的话太浪费时间了,好在,还有一个很给力的WP插件叫WP-SmushIt,这货可以为你网站上所有的图片做一次性压缩,所以没有理由不去用它。

4、优化你的WP数据库

你可以用WP-Optimize这个插件来优化你的WP数据库(清理spam,反复改版的文章,草稿,表格等等为你的服务器腾出更多空间从而提升效率);还有一些插件如WP-CleanerDB-Manger等。

5、开启防盗链机制

盗链是带宽的窃贼,当其他网站直接引用你站点的图片的时候,这会影响占用你本身的服务器资源从而影响网站运行效率,你的站点越出名,就会有越多的人盗用你的图片,解决方法是Wordpress有现成的插件Hotlink Protection。当然也可以通过重写htaccess文件来达到同样的效果,欲深入了解的童鞋可以询问自己的空间商如何设置。

6、为文件添加过期时间

关于这个文件过期时间,听起来很玄乎,其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间。有些文件(例如样式表中调用的背景图片和一些装饰性图片)其实在很长一段时间内这些图片都不会有很大的变化,所以对这类文件我们不妨设置长一些的缓存时间,这样浏览器就不需要每次从服务器下载这些文件而直接从缓存中读取,这样绝对可以提升加载速度。

当然,所以做法很简单,只需要在网站的.htaccess文件中加入以下代码,

  
ExpiresActive On
ExpiresDefault A600
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/css A604800
ExpiresByType image/gif A2592000
ExpiresByType image/png A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType text/plain A86400
ExpiresByType application/x-shockwave-flash A2592000
ExpiresByType video/x-flv A2592000
ExpiresByType application/pdf A2592000
ExpiresByType text/html A600

稍微解释一下,text/css表示样式表文件,text/plain代表的纯文本类文件,依次类推。其中A2592000就表示这种类型文件在浏览器中的缓存时间,以秒为单位。一天86400秒,2592000就表示这类文件可以缓存30天。

如果你不是经常修改模板,那样式表文件和javasctipt文件基本上也可以设置缓存一周到一个月左右。text/html文件不要设置太长的缓存时间,因为这些东西修改的频率很高,一天更新一次是有必要的。

7、为你的图片添加延时加载

延时加载就是当用户停留在第一屏的时候,不加载任何第一屏以下的图片信息,只有当用户把鼠标往下滚动的时候,这些图片才开始加载。这玩意儿不仅可以提升站点载入速度,更是可以节省带宽。要轻松的拥有这项功能,请安装WP的jQuery Image Lazy Load 插件吧。

8、控制文章草稿存数数

通常一篇博文我会保存10次以上的草稿,而Wordpress会无限制的存储每个草稿;如果我的博文已经发布了,为啥我还需要这些储存的草稿文章呢?所以这就是为啥我会用 Revision Control 插件来确保这些草稿内容的最小化。通常我会设置只存储2-3篇草稿来防止万一,但存储的数量绝对不会太高,否则你的WordPress backend只会被这些无意义的内容塞满从而降低运行效率。

好了,今天的分享就到这里,希望对大家有帮助,其实这些要点不仅仅对Wordpress有帮助,对其他开源网站也同样奏效。:-)

WordPress 的 .htaccess 规则

原文:wpshout.com

我们知道 .htaccess 文件能轻松地强化你的博客,减少带宽并增加可用性。我曾经写过一篇简易的 .htaccess 教程:《四个例子实战讲解.htaccess文件rewrite规则》。如果你还想继续了解 .htaccess 文件,那么不妨看看下面这26个规则:

但是请先记住一条黄金法则:先备份,再折腾!

A – WP- Admin – 管理员页面

你可以限制访问 WP- Admin 页面的 IP 地址

1
2
3
order deny,allow
allow from a.b.c.d # This is your static IP
deny from all

来源 –BlogSecurity.net

B – Blacklist – 黑名单

.htaccess 的一个重要功能是你能把它作为 IP 黑名单来使用:

1
2
3
4
5

order allow,deny
allow from all
deny from 123.456.789

来源 – Perishable Press

C – WP-Config Protection – 保护 Config 页

WP-Config 文件里包含了你的数据库名、数据库用户名与密码。这样的文件你敢让别人看到吗?所以你会需要用 .htaccess 来保护它。

1
2
3
4
5
# protect wpconfig.php
order allow,deny
deny from all

来源 – Josiah Cole

D – Disable Directory Browsing – 禁止浏览目录

WP-Config 文件里包含了你的数据库名、数据库用户名与密码。这样的文件你敢让别人看到吗?所以你会需要用 .htaccess 来保护它。

1
2
# disable directory browsing
Options All -Indexes

来源- Josiah Cole

E – Explanation – 释疑

如果我问你 .htaccess 是什么,我猜你一定很难说明白。老实说,我自个儿也不明白。好在维基百科给了个明确的解释:

.htaccess 是Apache HTTP Server的文件目录系统级别的配置文件的默认的名字。它提供了在主配置文件中定义用户自定义指令的支持。

维基百科也给出了一些特定的例子,你可以访问:http://zh.wikipedia.org/w/index.php?title=.htaccess&variant=zh-cn 了解更多。

F – Feedburner – RSS烧制

Feedburner 是各位博主的好帮手,通过这个例子你能把原来的 RSS 地址转向到烧制后的地址。

1
2
3
4
5
6
7
# temp redirect wordpress content feeds to feedburner

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT}!FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT}!FeedValidator [NC]
RewriteRule ^feed/?([_0-9a-z-]+)?/?$ http://feeds.feedburner.com/perishablepress [R=302,NC,L]

来源 – Perishable Press

G – Get an RSS Feed on a static page – 获取静态页的RSS

通过下面这个链接,你能学习到利用 .htaccess 获取静态页 RSS 的办法。

链接 – adityaspeaks.com

H – Disable hotlinking – 防止盗链

所谓盗链,就是别人私自用了你服务器上的图片、声音等文件,占用了你的带宽。你可以通过下面这个 .htaccess 规则来阻止盗链:

1
2
3
4
5
6
#disable hotlinking of images with forbidden or custom image option
RewriteEngine on
RewriteCond %{HTTP_REFERER}!^$
RewriteCond %{HTTP_REFERER}!^http://(www\.)?yourdomain.com/.*$ [NC]
#RewriteRule \.(gif|jpg)$ -[F]
#RewriteRule \.(gif|jpg)$ http://www.yourdomain.com/stealingisbad.gif [R,L]

来源 – Josiah Cole

I – Important! – 重要提示!

是啊,呵呵,“I”开头的词是有些难找,但是它同样重要,very Important!

备份,要记住备份。当你把东西搞得一团糟时,只有备份文件能救你!

J – Jauntily show the admin’s email address in error message

*抱歉,本词条有误*

K – Keep RSS ‘content thieves’ away – 防范“RSS小偷”

你一定不希望有人窃取你网站的内容吧?他们只要有你的 RSS 地址就能复制内容。如果你有对方网站的IP地址(怎么获取?很简单,google 它),就能屏蔽该网站对你的 RSS 的读取。如果有不止一家网站复制你的内容,你只要增加 IP 地址就行了。

1
2
3
RewriteEngine on
RewriteCond %{REMOTE_ADDR}^69.16.226.12
RewriteRule ^(.*)$ http://newfeedurl.com/feed

来源 – Seo Black Hat

L – Limiting number of simultaneous connections – 限制并发连接数

如果你要限制并发连接数(就是同时访问你的网站的人数),就使用下面这个代码。

1 MaxClients < number-of-connections>

M – Maintenance – 制作临时维护页面

无论什么原因,可能是维护、更新,你都可能会要暂时停止你的网站。这时你就需要一个维护页。无论访客访问的是你网站的任一 URL 还是 IP 地址,都能转向到维护页面。

1
2
3
4
RewriteEngine on
RewriteCond %{REQUEST_URI}!/maintenance.html$
RewriteCond %{REMOTE_ADDR}!^123\.123\.123\.123
RewriteRule $ /maintenance.html[R=302,L]

来源 – CatsWhoCode/Woueb.net

N – Deny no referer requests [stop spam comments!] – 拒绝垃圾留言!

这是一个比下文“S”词条更简便的防 Spam 方法。其原理是,如果留言者不公开来源,即是用机器留言的,就屏蔽之。就这么简单。

1
2
3
4
5
6
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER}!.*yourblog.com.*[OR]
RewriteCond %{HTTP_USER_AGENT}^$
RewriteRule (.*)^http://%{REMOTE_ADDR}/$ [R=301,L]

来源 – WPRecipes

O – Force files when opening to ‘save as’ – 用“另存为”方式打开文档

有时候你空间里的一些文件,比如音乐、视频文件,点开后会有软件自动打开这个文件。如果你不想自动打开,这个规则能把文件强制为另存为方式下载。

1 AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4

来源 – AskApache

P – Protect your .htaccess file – 保护 .htaccess 文件

如果你的博客已经做好的十足的防护措施,是不是也要考虑一下保护你的 .htaccess 文件呢?黑客也可能通过这个文件发起攻击。下面这个规则能禁止下载 .htaccess 文件。

1
2
3
4
5
6
# STRONG HTACCESS PROTECTION
\.([Hh][Tt][Aa])”>
order allow,deny
deny from all
satisfy all

来源 – Perishable Press

Q – Quicken your site’s loading time by caching – 设置缓存

下面这个链接有详细的教程,教你如何给 WordPress 博客设置缓存。

链接 – Samaxes

R – Redirect to other pages on your site – 301重定向

1 RedirectMatch 301^/blog/.*$ http://domain.tld/target.html

来源 – Perishable Press

S – Spam! – 阻止垃圾留言

通过 .htaccess 来禁止 Spam 是个好办法。下面这个链接给出了一个 Spam 黑名单,复制到你的 .htaccess 里,你就能防止绝大部分的垃圾留言。

来源 – perishablepress.com

T – Set the Timezone of the server – 设置服务器时区

译者:代码给出的是把TZ值设置为美国时间的代码,如果服务器在中国,你可以改为Asia/Shanghai。

1 SetEnv TZ America/Indianapolis

来源 – AskApache

U – Remove /category/ from your category URL – 简化 WP 分类页面地址

WordPress 的分类页面地址里有一个 /category/ ,会不会觉得这很多余呢?下面这个代码就能去掉它!

1 RedirectMatch 301^/category/(.+)$ http://www.askapache.com/$1

或者

1 RewriteRule ^category/(.+)$ http://www.askapache.com/$1 [R=301,L]

来源 – AskApache

V – Valiantly automatically fix URL spelling mistakes – 修复错误地址

这个代码能自动检查英文地址的拼写错误。

1
2
3

CheckSpelling On

来源 – Vortex Mind

W – Redirect from http://Www.whatever to http://Whatever – 去掉网址前面的www.

使用301转跳,实现网址标准化。

1
2
3
4
5
# permanently redirect from www domain to non-www domain
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{HTTP_HOST}^www\.domain\.tld$ [NC]
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]

来源 – Stupid htaccess tricks

X – Make your wp-login.php page Xenophobic – 限制他人访问 wp-login

Xenophobic: “排外,仇视陌生人”

我觉得你应该适当使用这个规则。如果你不是多人博客,可以限制他人访问登录页面,以达到更高的安全性。

1
2
3
4
5

Order deny,allow
Deny from All
Allow from 123.456.789.0

来源 – Reaper-X

Y – Easily rename your .htaccess file – 重命名 .htaccess 文件

如果你的服务器不接受以句点开头的文件怎么办?重命名它呗!下面这个代码能实现 .htaccess 文件的重命名。

1
2
# rename htaccess files
AccessFileName ht.access

来源 – Perishable Press

Z – Say Zygote in your .htaccess file – 在 .htaccess 里写注释

你可能会想在 .htaccess 文件里做些解释,好让别人能看懂。那怎么做注释呢?请看下面的代码:

1 # see -thisis a comment - you can only use letters and numbers and - and _ That is why there are no commas

要注意的是注释里只能写字母、数字与下划线

译者后记:原文的作者看样子也是经过收集才写成这篇文章的。如果你看了原文,请你注意,原文的有些代码里有一些多余或错误代码。我在本译文里都已做了修正。

WordPress优化之设置浏览器端缓存:Leverage browser caching

网站上的静态内容,诸如:图片、CSS、JS、flash等,一般变动很小,甚至几个月都不会有所更改,这些体积庞大的静态内容占据了大部分网页加载时间。如何降低静态内容加载时间,甚至不需要(二次)加载静态内容,Leverage browser caching(浏览器端缓存)可以有效地解决这一问题,他使得浏览器可以缓存静态内容,使得浏览器不需要二次加载这些内容。

实现方法很简单,向.htaccess文件中添加以下代码:

#Expire Header
ExpiresActive on
ExpiresByType text/css "access 1 month"
ExpiresByType text/plain "access 2 days"
ExpiresByType text/html  "access 2 days"
ExpiresByType application/javascript "access 1 month"
ExpiresByType image/jpeg "access 1 month"
ExpiresByType image/x-icon "access 1 month"
ExpiresByType image/gif "access 1 month"
ExpiresByType image/png "access 1 month"
ExpiresByType image/ico "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresDefault "access 1 month"

#Expire Header
ExpiresActive on //开启缓存
ExpiresByType text/css “access 1 month”//css文件缓存1个月
ExpiresByType text/plain “access 2 days”//纯文本内容缓存2天
ExpiresByType text/html “access 2 days”//html文件缓存2天
ExpiresByType application/javascript “access 1 month”//JS文件缓存1个月
ExpiresByType image/jpeg “access 1 month”//jpeg图片缓存1个月
ExpiresByType image/x-icon “access 1 month”//icon缓存1个月
ExpiresByType image/gif “access 1 month”//gif图片缓存一个月
ExpiresByType image/png “access 1 month”//png图片缓存一个月
ExpiresByType image/ico “access 1 month”//ico缓存1个月
ExpiresByType application/pdf “access 1 month”//pdf文件缓存一个月
ExpiresByType application/x-shockwave-flash “access 1 month”//flash缓存一个月
ExpiresDefault “access 1 month”// 默认(未提及的可缓存文件)缓存1个月

 

保存后刷新网页,用Yslow测试可以看到,绝大部分内容都被缓存了。也就是说:读者第一次打开网页加载所有静态文件,以后再访问该页面,就不需要加载了。如果其他页面也使用相同的静态文件(比如js和css),那么访问其他页面也会很快(直接在浏览器的缓存里提取相应的静态内容)。

读者第一次打开网页加载静态文件并缓存,以后再访问该页面,就不需要加载

该方法需要apache的mod_expires,Ubuntu下用a2enmod expires开启。

修复数据库中被SyntaxHighlighter替换的特殊符号

< > " & '修改自http://quartergeek.com/fix-special-char-replaced-by-syntaxhighlighter

代码增加了单引号的替换,同时增加几个变量提醒用户修改。

自从换上了Crayon Syntax Highlighter,发现原来<>&”’符号被WP替换成了<  > " & ‘而Crayon Syntax Highlighter又不能转换,只好转回来,于是写了下面这个脚本,成功地替换回来了。

set_charset("utf8");
$result = $conn->query("SELECT post_content, ID FROM ".$ta);
$stmt = $conn->prepare("UPDATE ".$ta." SET post_content = ? WHERE ID = ?"); 

$search  = array("<", ">", """, "&", "'");
$replace = array("<"   , ">"   , "\""    , "&"    ,"'");
while ($row = $result->fetch_array())
{
  $id = $row['ID'];
  $post_content = str_replace($search, $replace, $row['post_content']);
  $stmt->bind_param('si', $post_content, $id);
  if (!$stmt->execute())
  {
    die("\n[ERROR!]".$id."\n");
  }
  else
  {
    echo "[Success]".$id."\n";
  }
}

$result->free();
$conn->close();
?>

 

修改WORDPRESS模版底部信息

默认安装完毕wordpress后,需要完善的地方很有很多,首选就是选择一个符合网站风格的模版,面对众多免费worpress模版,肯定会挑花了你眼。这真是worpress强大之初,所有你想到或没想到的,wp团队都为你想到和做到, 你只需要掌握使用worpress的方法就可以了。

这里教大家修改wp模版的底部信息,将“自豪地采用wordpress”修改自己想要的结果。作为实例,我将“我自豪地采用wordpress”修改为“傲娇地采用wordpress”,其url链接地址为:maoxian.de

 

将“自豪地采用wordpress”修改为“傲娇地采用wordpress”

打开文件:./wp-content/languages/zh_CN.po,搜索“自豪地采用”并修改为相对应的信息就可以了。

接着修改模版文件下面的footer.php文件即可。

打开/wp-content/themes/twentyten/footer.php文件,将http://wordpress.org/修改为maoxian.de即可

Nginx的WordPress中文rewrite规则

 location / {
            root   /www;
            index  index.php index.html index.htm;
            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;
            }
        }

 

完美支持中文,亲测成功。添加在Location{}中间。

3D 标签云 wp-cumulus 中文显示完美解决办法

wp-cumulus 是我用的为数不多的前台插件。效果非常酷。效果见右侧,不过由于 Flash 本身大小限制的问题,不能嵌入全部中文字库,所以 3D 标签云中不能显示中文。常见的解决方案就是嵌入常用中文字体,这样虽然解决了中文显示的问题,但是导出后的 swf 文件的大小不仅增加了,而且后来增加的文字还是不能显示。本文提供一种不用嵌入字符的解决办法,使导出的 swf 文件大小在 8KB 左右,而且不会出现后来的文字不能显示,可以成为一种完美的解决办法

 

解决方法:

1.在http://wordpress.org/extend/plugins/wp-cumulus/download/下载 wp-cumulus 源代码(选择 Development Version,开发版本附带 fla 源文件)

2.打开 tagcloud.fla 选择 tag 文本框
wp-cumulus-cn-1
在右侧属性栏中,点击“嵌入”
wp-cumulus-cn-2
在弹出的对话框中,清除所有嵌入的文本,如图
wp-cumulus-cn-3
用记事本打开comroytanckwpcumulus目录中的Tag.as文件,找到_tf.embedFonts = true;一行,加双斜杠注释掉://_tf.embedFonts = true;,同时可以修改 format.font 为你自己喜欢的字体(常用字体,确保浏览者电脑中中安装这种字体),我的字体 format.font = “微软雅黑,Verdana, Geneva, Tahoma, Arial, sans-serif”;修改字体形式 format.bold = false;,Ctrl + 回车,生成 swf 文件就可以了,
wp-cumulus-cn-4

3.把生成的 tagcloud.swf 文件上传到服务器 wordpress 插件目录中(*/wp-content/plugins/wp-cumulus/),覆盖同名文件即可

PS:

如果你没有安装 Flash 或者不想这么麻烦,你也可以直接下载我的文件:http://maoxian.de/wp-content/plugins/wp-cumulus/tagcloud.swf(右键另存为,不要直接打开)