<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单生活 -- Kevin Yang的博客 &#187; WordPress</title>
	<atom:link href="http://www.imkevinyang.com/tags/wordpress/feed" rel="self" type="application/rss+xml" />
	<link>http://www.imkevinyang.com</link>
	<description>It&#039;s all about sharing</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:37:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>让博客不用Anti-Spam插件一样没有垃圾评论</title>
		<link>http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html</link>
		<comments>http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html#comments</comments>
		<pubDate>Mon, 15 Feb 2010 17:12:00 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[工具技巧]]></category>
		<category><![CDATA[AntiSpam plugin]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[博客]]></category>
		<category><![CDATA[垃圾评论]]></category>
		<category><![CDATA[表单]]></category>
		<category><![CDATA[评论机器人]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html</guid>
		<description><![CDATA[<p>写博客的人最讨厌的就是垃圾评论了。以前开博才不到半年没有装反垃圾评论插件的时候，平均一天会收到5条左右的垃圾评论，而且一看显然是机器人提交的，后来不得不找插件防着。现在网络上最常见的反垃圾评论插件就是加验证码了。让用户每次发表评论的时候都输入验证码。稍微用户体验好点的就只在用户第一次评论的时候才需要&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>写博客的人最讨厌的就是垃圾评论了。以前开博才不到半年没有装反垃圾评论插件的时候，平均一天会收到5条左右的垃圾评论，而且一看显然是机器人提交的，后来不得不找插件防着。现在网络上最常见的反垃圾评论插件就是加验证码了。让用户每次发表评论的时候都输入验证码。稍微用户体验好点的就只在用户第一次评论的时候才需要验证码，以后就不需要了。但这种方式很容易和那些缓存插件冲突，而且让用户多输入一个验证码感觉也挺无奈的。</p>
<p>后来我就用了WP-SpamFree插件。据说这插件是利用Cookie和Javascript互相配合来实现防范垃圾评论的，细节我没有去深究，不是很清楚。之前观察过一阵子他记录的调试日志，确实是能够100%的拦截垃圾评论，没有误报。</p>
<p>但前阵子这个插件突然大罢工了，随便怎么评论都说我的留言有问题，通不过。经过一番瞎折腾之后，发现又无缘无故好了。但是我对这插件开始有了不信任感~</p>
<p>我后来就在想，与其用别人现成的插件来实现反垃圾评论，为什么不自己实现一个简单易用，而又适合自己实际情况的反垃圾评论机制呢？</p>
<p>我对评论机器人软件不是很熟悉，猜想大概他们会维护一个庞大的博客列表，然后定时去爬取上面的网页，分析页面，找到上面的评论表单——可能是有特征识别，也可能不管三七二十一找到表单就算，然后填写其中的各个字段，最后提交表单。所以<strong><span style="color: #008000;">如果我把评论表单的提交地址给删了，那么评论机器人找不到提交地址或者找到错误的提交地址，就无法成功提交评论了。那真正的用户如何评论呢？我可以在表单加载完之后立刻通过Javascript动态更新评论表单的提交地址就行了</span></strong>。</p>
<p>代码修改非常简单，打开主题文件夹中，找到评论表单所在的模板文件，一般是在comments.php中。</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">action</span><span class="kwrd">="/wp-comments-post.php"</span> <span class="attr">method</span><span class="kwrd">="post"</span> <span class="attr">id</span><span class="kwrd">="commentform"</span><span class="kwrd">&gt;</span>
...
<span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span></pre>
<p>这是未修改之前的代码。将其action属性的值改为空字符串。然后在结束标签下面添加一行Javascript。如下所示：</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">action</span><span class="kwrd">=""</span> <span class="attr">method</span><span class="kwrd">="post"</span> <span class="attr">id</span><span class="kwrd">="commentform"</span><span class="kwrd">&gt;</span>
...
<span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="kwrd">&gt;</span>
    document.getElementById(<span class="str">"commentform"</span>).action = <span class="str">"/wp-comments-post.php"</span>;
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre>
<p>OK，这样代码重构完之后就和原来的一样了。</p>
<p>但是这样带来的问题就是，如果对方浏览器禁用了Javascript，那么他也无法评论了。对于我来说，这个比例基本可以忽略。当然，这个方法并不是万金油，不能抵挡所有垃圾评论。毕竟我没有广泛研究过评论机器人的工作原理，有可能人家就是使用自动化脚本模拟用户打开浏览器，输入网址然后填写评论，这也说不准。但是经过半个多月的试验，这个方法还算是比较靠谱的。至今没有见过一条机器人评论。有兴趣的朋友也可以试试。</p>
<p style="text-align: right;">——<a title="让博客不用Anti-Spam插件一样没有垃圾评论" href="http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8Anti-Spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/antispam-plugin" title="AntiSpam plugin" rel="tag">AntiSpam plugin</a>, <a href="http://www.imkevinyang.com/tags/javascript" title="Javascript" rel="tag">Javascript</a>, <a href="http://www.imkevinyang.com/tags/wordpress" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.imkevinyang.com/tags/%e5%8d%9a%e5%ae%a2" title="博客" rel="tag">博客</a>, <a href="http://www.imkevinyang.com/tags/%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba" title="垃圾评论" rel="tag">垃圾评论</a>, <a href="http://www.imkevinyang.com/categories/techarticles/toolskills-techarticles" title="工具技巧" rel="tag">工具技巧</a>, <a href="http://www.imkevinyang.com/tags/%e8%a1%a8%e5%8d%95" title="表单" rel="tag">表单</a>, <a href="http://www.imkevinyang.com/tags/%e8%af%84%e8%ae%ba%e6%9c%ba%e5%99%a8%e4%ba%ba" title="评论机器人" rel="tag">评论机器人</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/11/button%e6%a0%87%e7%ad%be%e9%bc%a0%e6%a0%87%e7%82%b9%e5%87%bb%e4%ba%8b%e4%bb%b6%e7%9a%84%e8%a7%a6%e5%8f%91%e6%ba%90%e9%97%ae%e9%a2%98.html" title="Button标签鼠标点击事件的触发源问题 (2009/11/27)">Button标签鼠标点击事件的触发源问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/ie%e4%b8%ad%e4%bd%bf%e7%94%a8windowopen%e6%89%93%e5%bc%80%e6%96%b0%e7%aa%97%e5%8f%a3%e6%97%b6%e6%97%a0%e6%b3%95%e8%8e%b7%e5%8f%96referrer%e5%af%b9%e8%b1%a1.html" title="IE中使用window.open打开新窗口时无法获取Referrer对象 (2009/03/07)">IE中使用window.open打开新窗口时无法获取Referrer对象</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/07/javajs%e5%a6%82%e4%bd%95%e4%bd%bf%e7%94%a8%e6%ad%a3%e5%88%99%e8%a1%a8%e8%be%be%e5%bc%8f%e5%8c%b9%e9%85%8d%e5%b5%8c%e5%a5%97html%e6%a0%87%e7%ad%be.html" title="Java/Js如何使用正则表达式匹配嵌套Html标签 (2010/07/30)">Java/Js如何使用正则表达式匹配嵌套Html标签</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/07/javascript-%e4%b8%ad%e7%9a%84false%e9%9b%b6%e5%80%bcnullundefined%e5%92%8c%e7%a9%ba%e5%ad%97%e7%ac%a6%e4%b8%b2%e5%af%b9%e8%b1%a1.html" title="Javascript 中的false,零值,null,undefined和空字符串对象 (2009/07/07)">Javascript 中的false,零值,null,undefined和空字符串对象</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/javascript%e4%b8%ad%e8%8e%b7%e5%8f%96%e5%87%ba%e9%94%99%e4%bb%a3%e7%a0%81%e6%89%80%e5%9c%a8%e6%96%87%e4%bb%b6%e5%8f%8a%e8%a1%8c%e6%95%b0.html" title="Javascript中获取出错代码所在文件及行数 (2009/05/18)">Javascript中获取出错代码所在文件及行数</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/04/javascript%e5%ad%97%e7%ac%a6%e4%b8%b2%e5%93%88%e5%b8%8c%e5%87%bd%e6%95%b0.html" title="Javascript字符串哈希函数 (2009/04/11)">Javascript字符串哈希函数</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/06/javascript%e6%93%8d%e7%ba%b5cookie.html" title="Javascript操纵Cookie (2009/06/11)">Javascript操纵Cookie</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html" title="WordPress评论中保留Html代码 (2009/10/31)">WordPress评论中保留Html代码</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e4%b8%80%e5%8f%a5%e8%af%9d%e5%8d%9a%e5%ae%a22009-08-04.html" title="一句话博客2009-08-04 (2009/08/04)">一句话博客2009-08-04</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/05/%e4%b8%ba%e4%bb%80%e4%b9%88iis77-5%e7%9a%84gzip%e4%b8%8d%e8%b5%b7%e4%bd%9c%e7%94%a8.html" title="为什么IIS7/7.5的Gzip不起作用 (2010/05/08)">为什么IIS7/7.5的Gzip不起作用</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>在WordPress中轻松集成Google自定义搜索引擎</title>
		<link>http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html</link>
		<comments>http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 06:22:00 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[工具技巧]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[博客搜索]]></category>
		<category><![CDATA[搜索引擎]]></category>
		<category><![CDATA[站内搜索]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html</guid>
		<description><![CDATA[<p>虽然Wordpress自带有一个站内搜索引擎，但是性能比较低下，而且还会占用服务器资源。所以还不如利用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>提供的自定义搜索引擎，将其集成到我们的博客中来。</p>
<p>之前我博客上面已经使用了<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>的自定义搜索引擎，但是当用户搜索的时候，是跳到<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com的域名上面去，而不是在我自己的域上。&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>虽然Wordpress自带有一个站内搜索引擎，但是性能比较低下，而且还会占用服务器资源。所以还不如利用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>提供的自定义搜索引擎，将其集成到我们的博客中来。</p>
<p>之前我博客上面已经使用了<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>的自定义搜索引擎，但是当用户搜索的时候，是跳到<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com的域名上面去，而不是在我自己的域上。我希望能够将搜索结果放在我自己设计的页面上，这样的好处是风格统一，在一定程度上也降低了用户流失率。下面讲一下如何在wordpress中集成<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>自定义搜索引擎。</p>
<h2>第一步：注册<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>自定义搜索引擎</h2>
<p>首先，我们需要到<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>上面去注册一个自己的搜索引擎。访问<a title="http://www.google.com/cse/" href="http://www.google.com/cse/">http://www.google.com/cse/</a>，用你的<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>账户登录之后，创建新的搜索引擎。</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb5.png" border="0" alt="image" width="319" height="49" /></p>
<blockquote><p>这里需要注意，最好在英文版下操作。因为使用英文版可以提前体验一些新功能，例如一会要用到的样式设计。</p></blockquote>
<p>在Sites（网站）中加上自己的博客链接，这样搜索结果就限定在你设置的网站内了。注意通配符的使用。</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb6.png" border="0" alt="image" width="244" height="104" /></p>
<p>接着点击control panel（控制面板）=&gt;get code（获取代码），这时会进入生成代码的页面。</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb7.png" border="0" alt="image" width="394" height="258" /></p>
<p>以往<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>自定义搜索的结果只能放在<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>自己的域上（以弹出窗口或者iframe的形式展示），现在新增了一个自定义搜索元素的选项，通过这个选项，我们可以使用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> ajax search的API，直接在我们自己的页面上指定的div上输出搜索结果了。</p>
<p>点击页面上的look and feel我们还可以配置搜索结果的样式。<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>预置了几套挺不错的样式供你选择。</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb8.png" border="0" alt="image" width="290" height="220" /></p>
<p>这里我选择的是greensky的样式。</p>
<p>拷贝上面自动生成的javascript代码，一会要用到。</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">="cse"</span> <span class="attr">style</span><span class="kwrd">="width: 100%;"</span><span class="kwrd">&gt;</span>Loading<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">src</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/jsapi"</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
&lt;script type=<span class="str">"text/javascript"</span>&gt;
  <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.load(<span class="str">'search'</span>, <span class="str">'1'</span>, {language : <span class="str">'zh-CN'</span>});
  <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.setOnLoadCallback(<span class="kwrd">function</span>(){
    <span class="kwrd">var</span> customSearchControl = <span class="kwrd">new</span> <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.search.CustomSearchControl(<span class="str">'009527755525159401988:63iuuetccag'</span>);
    customSearchControl.setResultSetSize(<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.search.Search.FILTERED_CSE_RESULTSET);
    customSearchControl.draw(<span class="str">'cse'</span>);
  }, <span class="kwrd">true</span>);
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">link</span> <span class="attr">rel</span><span class="kwrd">="stylesheet"</span> <span class="attr">href</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/cse/style/look/greensky.css"</span> <span class="attr">type</span><span class="kwrd">="text/css"</span> <span class="kwrd">/&gt;</span></pre>
<h2>第二步：创建搜索结果页</h2>
<p>为了让搜索结果在博客内显示，我们需要在wordpress中创建一个新的页面，作为搜索结果展示的页面。定位到wordpress主题文件夹下，然后新建一个叫做cse.php（文件名无所谓）的模板文件，内容如下所示，注意到，中间的一段代码就是在第一步中<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>自定义搜索引擎后台获取到的代码。</p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">php</span>
/*
<span class="attr">Template</span> <span class="attr">Name:</span> <span class="attr">cse</span>
*/
?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;?</span><span class="html">php</span> <span class="attr">get_header</span>(); ?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">="cse"</span> <span class="attr">style</span><span class="kwrd">="width: 100%;"</span><span class="kwrd">&gt;</span>Loading<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">src</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/jsapi"</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
&lt;script type=<span class="str">"text/javascript"</span>&gt;
  <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.load(<span class="str">'search'</span>, <span class="str">'1'</span>, {language : <span class="str">'zh-CN'</span>});
  <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.setOnLoadCallback(<span class="kwrd">function</span>(){
    <span class="kwrd">var</span> customSearchControl = <span class="kwrd">new</span> <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.search.CustomSearchControl(<span class="str">'009527755525159401988:63iuuetccag'</span>);
    customSearchControl.setResultSetSize(<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.search.Search.FILTERED_CSE_RESULTSET);
    customSearchControl.draw(<span class="str">'cse'</span>);
  }, <span class="kwrd">true</span>);
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">link</span> <span class="attr">rel</span><span class="kwrd">="stylesheet"</span> <span class="attr">href</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/cse/style/look/greensky.css"</span> <span class="attr">type</span><span class="kwrd">="text/css"</span> <span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;?</span><span class="html">php</span> <span class="attr">get_footer</span>(); ?<span class="kwrd">&gt;</span></pre>
<p>注意，<strong><span style="color: #008000;">上面代码中的Template Name后面填的名称，将会显示在wordpress后台文章/页面编辑器的模板选择框中</span></strong>。</p>
<p>将此模板文件通过FTP上传到服务器上相应的主题文件夹下，然后我们登录wordpress后台，创建一个新的页面，名字为sitesearch:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb9.png" border="0" alt="image" width="157" height="109" /></p>
<p>然后在右侧选择应用刚刚创建的cse模板：</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb10.png" border="0" alt="image" width="244" height="124" /></p>
<p>OK，现在当我们访问http: //www.imkevinyang.com/sitesearch网址的时候，就可以看到<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>的搜索框了。由于默认没有填入任何搜索关键词，所以我们暂时看不到任何搜索结果。</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb11.png" border="0" alt="image" width="342" height="83" /></p>
<h2>第三步：修改站内搜索提交表单</h2>
<p>上面我们已经创建了一个搜索结果页了，但现在这个页面是一个孤立页面，没有和其他页面关联起来。接下来我们要做的事情，就是<strong><span style="color: #008000;">当用户点击你网站上任意页面的站内搜索按钮的时候，将用户引导到你刚刚创建的搜索结果页上</span></strong>。</p>
<p>在你的主题文件夹中找到相应的模板页，在模板页中找到站内搜索相关的代码，例如我使用的inove主题，站内搜索相关的代码是放在templates/header.php文件中，代码如下：</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">class</span><span class="kwrd">="searchbox"</span> <span class="attr">style</span><span class="kwrd">="padding-top:5px;"</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">method</span><span class="kwrd">="get"</span> <span class="attr">action</span><span class="kwrd">="/"</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">="text"</span> <span class="attr">size</span><span class="kwrd">="24"</span> <span class="attr">name</span><span class="kwrd">="q"</span> <span class="attr">value</span><span class="kwrd">="搜索文章...."</span> <span class="attr">class</span><span class="kwrd">="textfield"</span> <span class="attr">style</span><span class="kwrd">="float:left"</span> <span class="attr">onblur</span><span class="kwrd">="if (this.value == '') {this.value = '搜索文章....';}"</span> <span class="attr">onfocus</span><span class="kwrd">="if (this.value != '') {this.value = '';}"</span><span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">input</span> <span class="attr">type</span><span class="kwrd">="hidden"</span> <span class="attr">value</span><span class="kwrd">="UTF-8"</span> <span class="attr">name</span><span class="kwrd">="ie"</span><span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">input</span> <span class="attr">class</span><span class="kwrd">="submitSearch"</span> <span class="attr">type</span><span class="kwrd">="submit"</span> <span class="attr">value</span><span class="kwrd">="Search"</span><span class="kwrd">&gt;&lt;/</span><span class="html">input</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">form</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span></pre>
<p>不同主题的站内搜索代码可能很不一样，放置的位置也不一样，大家可以尝试在整个主题文件夹中搜索包含“searchbox”关键字的文件。</p>
<p>内置的搜索引擎当用户点击搜索按钮之后会跳转到“http: //www.imkevinyang.com/?q=关键词”这样的地址，现在我们想让搜索结果跳到sitesearch页面，也就是刚才创建的页面，因此我们将上面代码中的form表单的action属性值改成“sitesearch”，这样，当我们提交表单的时候，跳转到的Url就形如：/sitesearch?q=XXX&amp;ie=utf-8了。</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">form</span> <span class="attr">method</span><span class="kwrd">="get"</span> <span class="attr">action</span><span class="kwrd">="/sitesearch"</span><span class="kwrd">&gt;</span></pre>
<h2>第四步：初始化搜索关键字</h2>
<p>好，现在当我们点击站内搜索按钮的时候，会跳到我们创建的页面/sitesearch上，并在Url参数中附带用户搜索的关键字。但是你会发现，搜索页面还是一片空白，没有展示任何搜索结果。这是因为<strong><span style="color: #008000;"><a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>并不能自动识别Url参数中的搜索关键字。因此我们要做的事情就是，先从Url中提取用户搜索的关键词，然后调用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> API使用此关键词进行搜索。</span></strong></p>
<p>打开之前创建的cse.php模板，代码修改如下：</p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">php</span>
/*
<span class="attr">Template</span> <span class="attr">Name:</span> <span class="attr">cse</span>
*/
?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;?</span><span class="html">php</span> <span class="attr">get_header</span>(); ?<span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">div</span> <span class="attr">id</span><span class="kwrd">="cse"</span> <span class="attr">style</span><span class="kwrd">="width: 100%;"</span><span class="kwrd">&gt;</span>Loading<span class="kwrd">&lt;/</span><span class="html">div</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">src</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/jsapi"</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
&lt;script type=<span class="str">"text/javascript"</span>&gt;
  <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.load(<span class="str">'search'</span>, <span class="str">'1'</span>, {language : <span class="str">'zh-CN'</span>});
  <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.setOnLoadCallback(<span class="kwrd">function</span>(){
        <span class="kwrd">var</span> customSearchControl = <span class="kwrd">new</span> <a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.search.CustomSearchControl(<span class="str">'009527755525159401988:63iuuetccag'</span>);
        customSearchControl.setResultSetSize(<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.search.Search.FILTERED_CSE_RESULTSET);
        customSearchControl.draw(<span class="str">'cse'</span>);
        <span class="kwrd">var</span> match = location.search.match(/q=([^&amp;]*)(&amp;|$)/);
        <span class="kwrd">if</span>(match &amp;&amp; match[1]){
            <span class="kwrd">var</span> search = decodeURIComponent(match[1]);            

            customSearchControl.execute(search);
        }
    });
<span class="kwrd">&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;</span><span class="html">link</span> <span class="attr">rel</span><span class="kwrd">="stylesheet"</span> <span class="attr">href</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/cse/style/look/greensky.css"</span> <span class="attr">type</span><span class="kwrd">="text/css"</span> <span class="kwrd">/&gt;</span>
<span class="kwrd">&lt;?</span><span class="html">php</span> <span class="attr">get_footer</span>(); ?<span class="kwrd">&gt;</span></pre>
<p>在上面的代码中，我先使用正则表达式提取出来Url中的关键词，并使用UTF-8解码，然后让<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>执行搜索。实际使用中，你需要确认你网站上使用的Url搜索参数是不是q，如果不是，那么需要将上述的正则表达式中的q改成你自己定义的参数。</p>
<p>最终的效果:</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb12.png" border="0" alt="image" width="349" height="182" /></p>
<h2>细微的调整</h2>
<h3>改用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>.CN防止站内搜索被重置</h3>
<p>由于众所周知的原因，我们使用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>.com搜索的时候经常会无厘头的被重置掉了，我们并不希望用户在我们网站上搜索文章的时候无缘无故被屏蔽掉了。所以为了保险起见，我们可以将第一步代码中引用的javascript文件地址修改成<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.cn，这样所有的搜索都会使用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.cn（部分功能如adsense还是会使用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com）。</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">src</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.com/jsapi"</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre>
<p>修改成：</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">script</span> <span class="attr">src</span><span class="kwrd">="http://www.<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">google</a>.cn/jsapi"</span> <span class="attr">type</span><span class="kwrd">="text/javascript"</span><span class="kwrd">&gt;&lt;/</span><span class="html">script</span><span class="kwrd">&gt;</span></pre>
<h3>让搜索结果只包含文章页</h3>
<p>大多数博客为了便于用户查阅文章，都会对文章进行聚类，例如按文章标签（也就是关键词）聚类，按文章类别聚类，按存档年份或者月份聚类，等等，这样就会出现大量冗余的内容，对搜索引擎来说，这样的聚类可以让博客看起来内容更丰富些，同时站内链接比较健康，SEO效果会相对好，但这样一来，用户就不容易在搜索结果中快速找到他想看的文章了，因此我们在设置搜索结果的时候，最好让结果只包含文章内容页即可。</p>
<p>要做到这一点，只需要在第一步中的“包含网站”中将原先的“*.imkevinyang.com/*”替换成“*.imkevinyang.com/*.html”即可。</p>
<h2>总结</h2>
<p>利用<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>自定义搜索引擎还有很多其他的好处，例如可以和<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> Analytics以及Adsense整合到一起，报表分析更加透彻。将搜索结果放置到自己博客内页，可以自己修改样式，以保持和主题风格的一致，同时也可以吸引用户留在你的博客上。</p>
<p>更加高级的用法，请参考<a title="Google代码指南" href="http://www.google.com/cse/docs/" target="_blank">Google代码指南</a>。</p>
<p>文章参考：<a href="http://www.whisperer.name/2009/09/improve-the-google-custom-search-results-of-inove/">http://www.whisperer.name/2009/09/improve-the-google-custom-search-results-of-inove/</a></p>
<p style="text-align: right;">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/google" title="Google" rel="tag">Google</a>, <a href="http://www.imkevinyang.com/tags/wordpress" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.imkevinyang.com/tags/%e5%8d%9a%e5%ae%a2%e6%90%9c%e7%b4%a2" title="博客搜索" rel="tag">博客搜索</a>, <a href="http://www.imkevinyang.com/categories/techarticles/toolskills-techarticles" title="工具技巧" rel="tag">工具技巧</a>, <a href="http://www.imkevinyang.com/tags/%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e" title="搜索引擎" rel="tag">搜索引擎</a>, <a href="http://www.imkevinyang.com/tags/%e7%ab%99%e5%86%85%e6%90%9c%e7%b4%a2" title="站内搜索" rel="tag">站内搜索</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/05/2009%e5%b9%b4%e7%ac%ac%e4%b8%80%e5%ad%a3%e5%ba%a6%e4%b8%ad%e5%9b%bd%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e%e5%b8%82%e5%9c%ba%e8%90%a5%e6%94%b6%e4%bb%bd%e9%a2%9d.html" title="2009年第一季度中国搜索引擎市场营收份额 (2009/05/06)">2009年第一季度中国搜索引擎市场营收份额</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/4%e8%a1%8cgreasemonkey%e4%bb%a3%e7%a0%81%e6%9c%80%e5%a4%a7%e5%8c%96google-reader%e7%9a%84%e9%98%85%e8%af%bb%e7%a9%ba%e9%97%b4.html" title="4行Greasemonkey代码最大化Google Reader的阅读空间 (2009/08/09)">4行Greasemonkey代码最大化Google Reader的阅读空间</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/03/android%e6%89%8b%e6%9c%ba%e5%88%9d%e4%bd%93%e9%aa%8c.html" title="Android手机初体验 (2010/03/01)">Android手机初体验</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/03/g1%e6%89%8b%e6%9c%ba%e4%b8%8e%e7%ac%94%e8%ae%b0%e6%9c%ac%e5%ae%9e%e7%8e%b0wifi%e4%ba%92%e8%81%94%e5%85%b1%e4%ba%ab%e4%b8%8a%e7%bd%91.html" title="G1手机与笔记本实现Wifi互联共享上网 (2010/03/02)">G1手机与笔记本实现Wifi互联共享上网</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/google-analytics%e4%b8%ad%e7%9a%84uniquepageview%e5%92%8cvisits%e7%9a%84%e5%8c%ba%e5%88%ab.html" title="Google Analytics中的UniquePageView和Visits的区别 (2009/12/07)">Google Analytics中的UniquePageView和Visits的区别</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/11/google-wave%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%99%e4%b9%88%e7%81%ab.html" title="Google Wave为什么这么火 (2009/11/14)">Google Wave为什么这么火</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html" title="Google和微软的一大不同 (2009/05/06)">Google和微软的一大不同</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/google%e5%b7%a5%e7%a8%8b%e5%b8%88matt-cutts%e8%b0%88seo.html" title="Google工程师Matt Cutts谈SEO (2009/03/23)">Google工程师Matt Cutts谈SEO</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/google%e6%8e%92%e5%90%8d%e6%9b%b4%e6%96%b0.html" title="Google排名更新 (2009/03/21)">Google排名更新</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/google%e7%9a%84%e4%bb%b7%e5%80%bc%e8%a7%82.html" title="Google的价值观 (2009/03/07)">Google的价值观</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html/feed</wfw:commentRss>
		<slash:comments>67</slash:comments>
		</item>
		<item>
		<title>解决WordPress升级后创建新页面时无法选择模板的问题</title>
		<link>http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html</link>
		<comments>http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 06:21:00 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[疑难杂症]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[新建页面]]></category>
		<category><![CDATA[模板]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html</guid>
		<description><![CDATA[<p>这些天把wordpress升级到了最新版本2.8.6，升级的时候没有发现什么问题，等到今天打算创建一个新页面的时候发现原先右侧“选择新页面应用的模板”的下拉框消失了。一开始以为是新版本把这个功能移到别的地方了，结果找了半天也没找到。</p>
<p>选快速编辑的时候，倒是有下拉框，但是只有“默认模板”这一项。</p>
<p>&#16&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>这些天把wordpress升级到了最新版本2.8.6，升级的时候没有发现什么问题，等到今天打算创建一个新页面的时候发现原先右侧“选择新页面应用的模板”的下拉框消失了。一开始以为是新版本把这个功能移到别的地方了，结果找了半天也没找到。</p>
<p>选快速编辑的时候，倒是有下拉框，但是只有“默认模板”这一项。</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb4.png" width="214" height="109" />&#160; </p>
<p><a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>上搜索了半天也没发现wordpress升级的时候有这个改动或者bug。后来以为是中文版的问题，就切回英文版，结果还是不行。</p>
<p>在快绝望的时候，尝试了一下把主题切换回默认的，然后再换回来现在使用的主题，居然神奇地找回了失落的“模板”项。</p>
<p align="right">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/wordpress" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.imkevinyang.com/tags/%e6%96%b0%e5%bb%ba%e9%a1%b5%e9%9d%a2" title="新建页面" rel="tag">新建页面</a>, <a href="http://www.imkevinyang.com/tags/%e6%a8%a1%e6%9d%bf" title="模板" rel="tag">模板</a>, <a href="http://www.imkevinyang.com/categories/techarticles/knottyproblems" title="疑难杂症" rel="tag">疑难杂症</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/04/dynamic-template%e9%9d%9e%e5%b8%b8%e5%a5%bd%e7%94%a8%e7%9a%84windows-live-writer%e5%8a%a8%e6%80%81%e6%a8%a1%e6%9d%bf%e6%8f%92%e4%bb%b6.html" title="Dynamic Template——非常好用的Windows Live Writer动态模板插件 (2009/04/09)">Dynamic Template——非常好用的Windows Live Writer动态模板插件</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html" title="WordPress评论中保留Html代码 (2009/10/31)">WordPress评论中保留Html代码</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html" title="博客空间迁移三步走 (2009/08/21)">博客空间迁移三步走</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html" title="在WordPress中轻松集成Google自定义搜索引擎 (2009/12/07)">在WordPress中轻松集成Google自定义搜索引擎</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决WordPress自动将半角替换成全角的问题 (2009/10/27)">解决WordPress自动将半角替换成全角的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html" title="让博客不用Anti-Spam插件一样没有垃圾评论 (2010/02/16)">让博客不用Anti-Spam插件一样没有垃圾评论</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress评论中保留Html代码</title>
		<link>http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html</link>
		<comments>http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html#comments</comments>
		<pubDate>Sat, 31 Oct 2009 08:43:20 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[工具技巧]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[TinyMCE]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[插件]]></category>
		<category><![CDATA[评论]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html</guid>
		<description><![CDATA[<p>这几天有人在&#34;<a title="使用正则表达式匹配嵌套Html标签" href="http://www.imkevinyang.com/2009/07/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D%E5%B5%8C%E5%A5%97html%E6%A0%87%E7%AD%BE.html" target="_blank">使用正则表达式匹配嵌套Html标签</a>&#34;这篇文章评论中留下一段Html代码问我怎么用正则表达式匹配XX内容，但是我在后台看到的却是已经被去除了Html标签或者被解释执行了的html代码。</p>
<p>例如有人发了&#60;div&#62;XXX&#60;/div&#62;，后台看到的只是XX&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>这几天有人在&quot;<a title="使用正则表达式匹配嵌套Html标签" href="http://www.imkevinyang.com/2009/07/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E5%8C%B9%E9%85%8D%E5%B5%8C%E5%A5%97html%E6%A0%87%E7%AD%BE.html" target="_blank">使用正则表达式匹配嵌套Html标签</a>&quot;这篇文章评论中留下一段Html代码问我怎么用正则表达式匹配XX内容，但是我在后台看到的却是已经被去除了Html标签或者被解释执行了的html代码。</p>
<p>例如有人发了&lt;div&gt;XXX&lt;/div&gt;，后台看到的只是XXX；如果发&lt;b&gt;XXX&lt;/b&gt;，后台看到的是粗体的XXX。这有时候并不是访客想要的，特别是对于技术交流的用户来说。</p>
<p>上网搜了半天没有找到任何可用的插件可以实现对这些html标签进行转义，最后只能变通，找到了TinyMCEComments这个插件，这个插件使用TinyMCE编辑器取代了默认的评论编辑器（其实就是普通的Textarea），而一般的web编辑器都会对输入的Html代码进行转义再传给后台代码。试用了一下，果然可以达到我的目的。</p>
<p>希望对那些和我遇到一样问题的人有帮助，或者如果你有更好的办法，请留下你宝贵的意见。</p>
<p align="right">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/html" title="HTML" rel="tag">HTML</a>, <a href="http://www.imkevinyang.com/tags/tinymce" title="TinyMCE" rel="tag">TinyMCE</a>, <a href="http://www.imkevinyang.com/tags/wordpress" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.imkevinyang.com/categories/techarticles/toolskills-techarticles" title="工具技巧" rel="tag">工具技巧</a>, <a href="http://www.imkevinyang.com/tags/%e6%8f%92%e4%bb%b6" title="插件" rel="tag">插件</a>, <a href="http://www.imkevinyang.com/tags/%e8%af%84%e8%ae%ba" title="评论" rel="tag">评论</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/11/button%e6%a0%87%e7%ad%be%e9%bc%a0%e6%a0%87%e7%82%b9%e5%87%bb%e4%ba%8b%e4%bb%b6%e7%9a%84%e8%a7%a6%e5%8f%91%e6%ba%90%e9%97%ae%e9%a2%98.html" title="Button标签鼠标点击事件的触发源问题 (2009/11/27)">Button标签鼠标点击事件的触发源问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/04/dynamic-template%e9%9d%9e%e5%b8%b8%e5%a5%bd%e7%94%a8%e7%9a%84windows-live-writer%e5%8a%a8%e6%80%81%e6%a8%a1%e6%9d%bf%e6%8f%92%e4%bb%b6.html" title="Dynamic Template——非常好用的Windows Live Writer动态模板插件 (2009/04/09)">Dynamic Template——非常好用的Windows Live Writer动态模板插件</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/04/pre%e6%a0%87%e7%ad%be%e5%86%85%e6%96%87%e5%ad%97%e8%87%aa%e5%8a%a8%e6%8d%a2%e8%a1%8c%ef%bc%88%e5%85%bc%e5%ae%b9%e5%a4%9a%e6%95%b0%e4%b8%bb%e6%b5%81%e6%b5%8f%e8%a7%88%e5%99%a8%ef%bc%89.html" title="Pre标签内文字自动换行（兼容多数主流浏览器） (2009/04/09)">Pre标签内文字自动换行（兼容多数主流浏览器）</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html" title="博客空间迁移三步走 (2009/08/21)">博客空间迁移三步走</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html" title="在WordPress中轻松集成Google自定义搜索引擎 (2009/12/07)">在WordPress中轻松集成Google自定义搜索引擎</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决WordPress升级后创建新页面时无法选择模板的问题 (2009/12/07)">解决WordPress升级后创建新页面时无法选择模板的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决WordPress自动将半角替换成全角的问题 (2009/10/27)">解决WordPress自动将半角替换成全角的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html" title="让博客不用Anti-Spam插件一样没有垃圾评论 (2010/02/16)">让博客不用Anti-Spam插件一样没有垃圾评论</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/07/%e8%b7%a8%e5%9f%9f%e4%b8%8b%e8%af%b7%e6%b1%82silverlight-xap%e5%8c%85%e5%bc%95%e8%b5%b7%e7%9a%84%e9%97%ae%e9%a2%98.html" title="跨域下请求Silverlight Xap包引起的问题 (2009/07/12)">跨域下请求Silverlight Xap包引起的问题</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>解决WordPress自动将半角替换成全角的问题</title>
		<link>http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html</link>
		<comments>http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Tue, 27 Oct 2009 13:00:31 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[其他随笔]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[全半角]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html</guid>
		<description><![CDATA[<p>今天在看自己写的<a title="Url编解码" href="http://www.imkevinyang.com/2009/08/%e8%af%a6%e8%a7%a3javascript%e4%b8%ad%e7%9a%84url%e7%bc%96%e8%a7%a3%e7%a0%81.html" target="_blank">Url编解码文章</a>的时候，发现原本半角的字符全变成全角字符了。还以为是我笔误，在编辑面板中查看的时候，发现确实是半角字符。上网搜了一下，发现wordpress是会自动将半角字符自动输出为全角字符，不知道是出于什么原因。无怪乎以前逛别人博客的时候发现别人贴的代码总是带有全角字符，很不舒服&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>今天在看自己写的<a title="Url编解码" href="http://www.imkevinyang.com/2009/08/%e8%af%a6%e8%a7%a3javascript%e4%b8%ad%e7%9a%84url%e7%bc%96%e8%a7%a3%e7%a0%81.html" target="_blank">Url编解码文章</a>的时候，发现原本半角的字符全变成全角字符了。还以为是我笔误，在编辑面板中查看的时候，发现确实是半角字符。上网搜了一下，发现wordpress是会自动将半角字符自动输出为全角字符，不知道是出于什么原因。无怪乎以前逛别人博客的时候发现别人贴的代码总是带有全角字符，很不舒服，原来是这么回事。</p>
<p>网上倒是有插件Quotmarks Replacer可以解决这个问题，但是不想再整那么多插件了，麻烦。有人提供了更简单的办法，只需要进入wordpress管理后台，主题文件夹编辑窗口下，找到function.php，然后在文件末尾添加这么一行：</p>
<pre class="csharpcode">&lt;?php remove_filter(<span class="str">'the_content'</span>, <span class="str">'wptexturize'</span>); ?&gt;</pre>
<p><span class="str">之所以会把半角替换成全角是因为调用了wptexturize函数，</span>这行代码就是把这个函数给移除掉。参考：http://www.life-studio.cn/wordpress-code-without-plugins.html</p>
<p><font color="#ff0000">update:</font></p>
<p>在其他地方也会用到此函数，因此需要更新上面的代码：</p>
<pre class="csharpcode"><span class="kwrd">&lt;?</span><span class="html">php</span>
/*
<span class="attr">Plugin</span> <span class="attr">Name:</span> <span class="attr">Quotmarks</span> <span class="attr">Replacer</span>
<span class="attr">Plugin</span> <span class="attr">URI:</span> <span class="attr">http:</span>//<span class="attr">sparanoid</span>.<span class="attr">com</span>/<span class="attr">tag</span>/<span class="attr">quotmarks-replacer</span>/
<span class="attr">Description:</span> <span class="attr">A</span> <span class="attr">plugin</span> <span class="attr">disables</span> <span class="attr">wptexturize</span> <span class="attr">founction</span> <span class="attr">that</span> <span class="attr">keeps</span> <span class="attr">all</span> <span class="attr">quotation</span> <span class="attr">marks</span> <span class="attr">and</span> <span class="attr">suspension</span> <span class="attr">points</span> <span class="attr">in</span> <span class="attr">half-width</span> <span class="attr">form</span>. <span class="attr">通过禁用</span> <span class="attr">wptexturize</span> <span class="attr">函数</span>，<span class="attr">解决</span> <span class="attr">WordPress</span> <span class="attr">自动将半角的单引号</span>、<span class="attr">双引号和省略号转换为全角标点的问题</span>。<span class="attr">使后台输入的标点格式与前台读者浏览的标点格式保持一致</span>。
<span class="attr">Version:</span> <span class="attr">2</span>.<span class="attr">2</span>
<span class="attr">Author:</span> <span class="attr">Sparanoid</span>
<span class="attr">Author</span> <span class="attr">URI:</span> <span class="attr">http:</span>//<span class="attr">sparanoid</span>.<span class="attr">com</span>/
*/

$<span class="attr">qmr_work_tags</span> = <span class="attr">array</span>(
    <span class="kwrd">'bloginfo'</span>,
    <span class="kwrd">'comment_author'</span>,
    <span class="kwrd">'comment_text'</span>,
    <span class="kwrd">'list_cats'</span>,
    <span class="kwrd">'link_name'</span>,
    <span class="kwrd">'link_description'</span>,
    <span class="kwrd">'link_notes'</span>,
    <span class="kwrd">'single_post_title'</span>,
    <span class="kwrd">'term_name'</span>,
    <span class="kwrd">'term_description'</span>,
    <span class="kwrd">'the_title'</span>,
    <span class="kwrd">'the_content'</span>,
    <span class="kwrd">'the_excerpt'</span>,
    <span class="kwrd">'wp_title'</span>,
    <span class="kwrd">'widget_title'</span>
    );

<span class="attr">foreach</span> ( $<span class="attr">qmr_work_tags</span> <span class="attr">as</span> $<span class="attr">qmr_work_tag</span> ) {
    <span class="attr">remove_filter</span> ($<span class="attr">qmr_work_tag</span>, <span class="kwrd">'wptexturize'</span>);
}

?<span class="kwrd">&gt;</span></pre>
<p align="right">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/wordpress" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.imkevinyang.com/tags/%e5%85%a8%e5%8d%8a%e8%a7%92" title="全半角" rel="tag">全半角</a>, <a href="http://www.imkevinyang.com/categories/techarticles/othertecharticles" title="其他随笔" rel="tag">其他随笔</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html" title="WordPress评论中保留Html代码 (2009/10/31)">WordPress评论中保留Html代码</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e5%85%a8%e5%8d%8a%e8%a7%92%e7%a9%ba%e6%a0%bc%e5%af%bc%e8%87%b4%e7%9a%84analysis-service%e5%a4%84%e7%90%86%e9%94%99%e8%af%af.html" title="全半角空格导致的Analysis Services处理错误 (2009/10/09)">全半角空格导致的Analysis Services处理错误</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html" title="博客空间迁移三步走 (2009/08/21)">博客空间迁移三步走</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html" title="在WordPress中轻松集成Google自定义搜索引擎 (2009/12/07)">在WordPress中轻松集成Google自定义搜索引擎</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决WordPress升级后创建新页面时无法选择模板的问题 (2009/12/07)">解决WordPress升级后创建新页面时无法选择模板的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html" title="让博客不用Anti-Spam插件一样没有垃圾评论 (2010/02/16)">让博客不用Anti-Spam插件一样没有垃圾评论</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>博客空间迁移三步走</title>
		<link>http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html</link>
		<comments>http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html#comments</comments>
		<pubDate>Thu, 20 Aug 2009 18:41:45 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[技术随笔]]></category>
		<category><![CDATA[疑难杂症]]></category>
		<category><![CDATA[404]]></category>
		<category><![CDATA[Hosting]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[免费]]></category>
		<category><![CDATA[免费空间]]></category>
		<category><![CDATA[博客迁移]]></category>
		<category><![CDATA[虚拟主机]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html</guid>
		<description><![CDATA[<p>本以为空间迁移是件至少不会特别麻烦的事情，特别是当两个空间提供商提供的主机配置很相似的情况下。结果昨天一天换了三家免费空间（DNS不断的被我改来改去），都没搞定迁移工作，今天找到了AtbHost，也是一家老牌的空间提供商，据说速度和稳定性都挺不错的，所以决定再试一把。最后在历经很多疑难问题之后总算迁&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>本以为空间迁移是件至少不会特别麻烦的事情，特别是当两个空间提供商提供的主机配置很相似的情况下。结果昨天一天换了三家免费空间（DNS不断的被我改来改去），都没搞定迁移工作，今天找到了AtbHost，也是一家老牌的空间提供商，据说速度和稳定性都挺不错的，所以决定再试一把。最后在历经很多疑难问题之后总算迁移成功，现在说说我转移博客空间时的一些思考。</p>
<h2>博客迁移第一步——选好合适的新空间</h2>
<p>这实际上是废话，你要搬家，不先找好地方就把东西搬出来能行吗~但是找新空间的时候需要注意一些事项。</p>
<h3>新空间主机的配置最好和原空间的相近</h3>
<p>相近的配置能够为你节省不少的精力和麻烦。我昨天找的其中一家免费空间，好不容易注册上了，网站都上传上去了，结果在捣腾数据库的时候发现，新空间的Mysql居然是4.1版本的，而我原先用的主机是最新的5.1。我不知道Mysql对于版本降级支持得怎么样，反正我昨天自己试了很多方法，包括按照Mysql官网说的，把兼容模式调到Mysql40也不行，<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>了很多文章，大多数是讲如何平稳从4.0升级到5.0的，降级的说得不多。后来只有放弃此空间。因此相近的配置，如数据库平台及版本，主机平台，PHP版本等等，确实能够省不少心。</p>
<h3>尽量选择老牌的国外空间提供商</h3>
<p>现在提供空间的有很多，国外的相比国内的成熟，而且说实在，在国内做博客很不自由，要备案，不能随意谈论政治（如果你已经习惯了政府的愚民教育，你可能对时事啥的都不会感兴趣），否则动不动就把你河蟹了，连通知都不通知你一声。而国外很多空间提供商毕竟做了比较久，也比较言论自由一些。老牌的提供商通常意味着可靠的服务。</p>
<h3>阅读空间服务说明</h3>
<p>空间服务说明很重要，它通常会告诉你，当你注册之后你能够享受到什么样的权益，以及你需要遵循什么样的义务，空间提供商会不会在不通知你的情况下直接关闭你的站点，等等。国外的法律相比国内健全很多，因此国外空间提供商的这种“合同”式的服务说明通常是需要重视的。</p>
<h2>博客迁移第二步——数据库迁移</h2>
<p>现在大多数平台使用的数据库都是MySql，用PHPWind管理。数据库迁移工作流程实际上比较简单。你需要登陆到你原来的Mysql平台管理界面上，然后选择“导出”，选择导出文件的格式，通常使用gzip可以大大降低传输带宽。</p>
<p><img style="border-right-width: 0px; margin: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://www.imkevinyang.com/wp-content/uploads/2009/08/image_thumb11.png" width="459" height="55" /> </p>
<p>然后到新的Mysql平台管理界面上选择“导入（Import）”，上传之前导出的文件即可。</p>
<p>当数据库偏大的时候，迁移工作通常会比较麻烦，经常需要执行多次才能成功。PHPWind提供了“断点续导”（我瞎编的词^^）的功能，导出的sql脚本在执行到快超时的时候会记住当前执行的位置，然后提交事务，然后你再重新上传一次，下一次就会从上一次执行的位置开始执行。但我在试验的时候却出错，提供@timezone为null什么的。因为sql文件太大了，UltraEdit和Notepad2都无法正常查看，所以我没能找到为什么出错的详细原因，猜测是因为分批到的时候，有一个变量被定义在了上一批导入的脚本中，而在下一批导入的脚本中又使用了这个变量。纯属瞎扯，不知道靠不靠谱~ </p>
<p>我的数据库导出的sql有5M多，gzip压缩完之后为900多K，但是用gzip导入的时候却经常出错，要么超时，要么分批导的时候提示@timezone为null。后来把gzip中的sql文件解压出来直接导入就没有任何问题了。不知道是什么问题。</p>
<p>还有需要注意的是数据库编码的问题。需要保持原数据库和新数据库表的编码一致，否则有可能会造成查询得到的结果显示乱码的问题。</p>
<h2>博客迁移第三步——网站迁移</h2>
<p>相比数据库迁移，网站迁移通常就简单多了。只需要把原网站的内容一扒下来，修改数据库等配置，然后FTP上传到新空间即可。等DNS更新完就可以直接看到网站熟悉的面孔了。</p>
<p>通常网站迁移都会相对比较慢，特别是当图片Host在自己空间上的时候。而很多免费空间提供的Ftp地址都是以域名来访问的，如果DNS还没更新，那么你是不能够通过原先的域名去访问FTP的。但是我发现，<strong><font color="#008000">实际上很多免费空间他们都提供了另外一个入口让你访问FTP或者控制面板等</font></strong>。有一些会在邮件中说明，有一些则没有明说。像AtbHost，邮件写得非常简略，只告诉我可以通过原先的域名加上2082端口来访问控制面板，同时需要修改DNS使之指向atbhost自己的DNS服务器。我压根就不知道怎么访问FTP。后来在论坛上看到别人回的贴才知道，原来可以通过server02.atbhost.net这个地址来访问FTP以及CPanel。所以如果你也遇到这样的情况，可以多上官方的论坛，看看别人的问题及相关回帖中是否有一些有价值的信息被漏掉了。</p>
<h2>WordPress迁移到AtbHost遇到的问题</h2>
<p>我的Wordpress系统从000webhost迁移到Atbhost之后，连连受挫，先是访问什么页面都会被重定向到500的错误页面（实际上HTTP状态码并不是500）。看了论坛上有人说AtbHost不支持wordpress，访问老是500，我就开始紧张——这次别又浪费时间了，后来看到CPanel中的安装应用程序有wordpress，舒了一口气。后来发现可疑对象htaccess文件。我打开看看，里面的东西全是wp-supercache自动生成的rewrite规则。我把这个文件删了之后访问首页就正常了。</p>
<p>正欲高兴，发现点任何一篇文章都被重定向到404的错误页面（实际上状态码又不是404）。这个症状和我昨天用的另外一家空间遇到的症状一摸一样。我一开始怀疑的是Url中包含UTF-8编码过的中文的缘故。还上论坛发帖询问是否apache服务器的默认字符集不是UTF-8导致Url解析不了什么的。没人搭理我。我只有自己再尝试了。</p>
<p>后来发现，即使那些Url中只包含纯粹的英文字母也会到了404页面。这就说明了并不是UTF-8编码的问题了，而很有可能是Url Rewrite的问题。我登陆了CPanel，却没有找到和Rewrite相关的配置项。后来在wordpress后台（后台不会被重定向到404），每个选项都看了看，发现了可疑对象，就是<strong><font color="#008000">Permalink Settings，也就是永久链接设置，这个选项是用来设置文章的永久链接Url的格式的。看上去和Url Rewrite很有关系。我尝试着将其修改成其他的永久链接格式之后，发现竟然成功了</font></strong>/(ㄒoㄒ)/~~ 可把我感动的，后来我把格式改成原来的那样（不改回去<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>上的结果全都404了），也还是没问题了。我估摸着，应该是当保存永久链接设置之后，Wordpress系统会向服务器写入一些配置性的选项（不是写到网站内的某个文件上），这些选项直接影响到Url Rewrite的成功与否。由于我的博客是直接从另外一个空间拷过来的，因此这些配置自然也就丢失了，Rewrite的规则自然就不对了，因此重新Save一下Wordpress就会将最新的规则写入服务器配置，这样就解决了问题了。</p>
<p>希望上面这些东西对你有帮助~</p>
<p align="right">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/404" title="404" rel="tag">404</a>, <a href="http://www.imkevinyang.com/tags/hosting" title="Hosting" rel="tag">Hosting</a>, <a href="http://www.imkevinyang.com/tags/wordpress" title="WordPress" rel="tag">WordPress</a>, <a href="http://www.imkevinyang.com/tags/%e5%85%8d%e8%b4%b9" title="免费" rel="tag">免费</a>, <a href="http://www.imkevinyang.com/tags/%e5%85%8d%e8%b4%b9%e7%a9%ba%e9%97%b4" title="免费空间" rel="tag">免费空间</a>, <a href="http://www.imkevinyang.com/tags/%e5%8d%9a%e5%ae%a2%e8%bf%81%e7%a7%bb" title="博客迁移" rel="tag">博客迁移</a>, <a href="http://www.imkevinyang.com/categories/techarticles" title="技术随笔" rel="tag">技术随笔</a>, <a href="http://www.imkevinyang.com/categories/techarticles/knottyproblems" title="疑难杂症" rel="tag">疑难杂症</a>, <a href="http://www.imkevinyang.com/tags/%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba" title="虚拟主机" rel="tag">虚拟主机</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/10/wordpress%e8%af%84%e8%ae%ba%e4%b8%ad%e4%bf%9d%e7%95%99html%e4%bb%a3%e7%a0%81.html" title="WordPress评论中保留Html代码 (2009/10/31)">WordPress评论中保留Html代码</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e5%85%8d%e8%b4%b9%e7%9a%84seo%e6%a3%80%e6%b5%8b%e5%b7%a5%e5%85%b7.html" title="免费的SEO检测工具 (2009/03/22)">免费的SEO检测工具</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e6%90%ac%e5%ae%b6%e4%ba%86.html" title="博客空间搬家了 (2009/08/21)">博客空间搬家了</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e5%9c%a8wordpress%e4%b8%ad%e8%bd%bb%e6%9d%be%e9%9b%86%e6%88%90google%e8%87%aa%e5%ae%9a%e4%b9%89%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e.html" title="在WordPress中轻松集成Google自定义搜索引擎 (2009/12/07)">在WordPress中轻松集成Google自定义搜索引擎</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e5%b8%b8%e5%a4%87%e4%bb%bd%e6%98%af%e4%b8%aa%e5%a5%bd%e4%b9%a0%e6%83%af.html" title="常备份是个好习惯 (2009/10/10)">常备份是个好习惯</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/05/%e8%80%81%e5%a4%96%e7%9a%84%e5%88%9b%e6%84%8f404%e9%a1%b5%e9%9d%a2.html" title="老外的创意404页面 (2009/05/06)">老外的创意404页面</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/%e8%a7%a3%e5%86%b3wordpress%e5%8d%87%e7%ba%a7%e5%90%8e%e5%88%9b%e5%bb%ba%e6%96%b0%e9%a1%b5%e9%9d%a2%e6%97%b6%e6%97%a0%e6%b3%95%e9%80%89%e6%8b%a9%e6%a8%a1%e6%9d%bf%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决WordPress升级后创建新页面时无法选择模板的问题 (2009/12/07)">解决WordPress升级后创建新页面时无法选择模板的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/10/%e8%a7%a3%e5%86%b3wordpress%e8%87%aa%e5%8a%a8%e5%b0%86%e5%8d%8a%e8%a7%92%e6%9b%bf%e6%8d%a2%e6%88%90%e5%85%a8%e8%a7%92%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决WordPress自动将半角替换成全角的问题 (2009/10/27)">解决WordPress自动将半角替换成全角的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/02/%e8%ae%a9%e5%8d%9a%e5%ae%a2%e4%b8%8d%e7%94%a8anti-spam%e6%8f%92%e4%bb%b6%e4%b8%80%e6%a0%b7%e6%b2%a1%e6%9c%89%e5%9e%83%e5%9c%be%e8%af%84%e8%ae%ba.html" title="让博客不用Anti-Spam插件一样没有垃圾评论 (2010/02/16)">让博客不用Anti-Spam插件一样没有垃圾评论</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/01/%e8%af%a5%e6%ad%bb%e7%9a%84wordpress-database-backup%e6%8f%92%e4%bb%b6.html" title="该死的WordPress Database Backup插件 (2010/01/24)">该死的WordPress Database Backup插件</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/08/%e5%8d%9a%e5%ae%a2%e7%a9%ba%e9%97%b4%e8%bf%81%e7%a7%bb%e4%b8%89%e6%ad%a5%e8%b5%b0.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: www.imkevinyang.com @ 2012-02-08 00:55:16 -->
