想起刚刚搭建“风云阁”时候,就有位老站长和我说过:建站要有耐心,要经得起折腾!这段时间我终于感受到了。
最近由于一些基本大家都能猜到的且不可抗拒的原因,我考虑良久决定,将风云阁域名从 iron-feet.cn 更换为 iron-feet.com 。
域名的更换给各位朋友们带来的不便真的是非常抱歉。但是为了能和朋友长久地一起交流技术和分享生活的喜怒哀乐,不得不出此下策。
目前通过 iron-feet.cn 访问风云阁,会自动跳转至 iron-feet.com。该跳转会一直保持到 iron-feet.cn 域名过期。但是还是劳烦各位朋友们做点更改。
- 将本站作为友链以及加入收藏夹等等的朋友们,请各位更新一下您的地址。我在此不甚感激。
- 利用订阅器订阅本站的朋友们,如果您是通过本站的Feedsky和Feedburner地址来订阅的,那就无须任何改动了。如果您是通过本站前域名 iron-feet.cn订阅的 ,那请更新一下订阅地址。您可在本站右侧侧边栏获得订阅地址,非常感谢!我会依然尽所能地认真的维护本博,和朋友们分享点滴和交流技术。
目前为止,我认识的部分站长和博主都纷纷开始更换域名了。因此我相信目前想更换域名的应该不占少数。接下来我会就更换域名一些注意事项列举一下(以下都是以本站为例 ):
- 域名的更换:
进入Wordpress的后台,Setting->General,将WordPress address、Blog address里面的 http://www.iron-feet.cn 改为 http://www.iron-feet.com
- SEO问题的解决方法:
你需要让搜索引擎知道你的站点更换域名了,
- 根据Google官方的说明:
If you’ve moved your site to a new domain, you can use the change of address tool to tell Google about your new URL. We’ll update our index to reflect your new URL.
如果您用的是主机是支持URL Rewrite的话,可以通过在.htaccess添加这么几行来实现(多谢Solrex的提供)
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.:]+\.)*iron-feet\.cn\.?(:[0-9]*)?$ [NC]
RewriteRule ^(.*)$ http://www.iron-feet.com/$1 [R=301,L]
当然如果您的主机不支持URL Rewrite也不用着急,我们可以用PHP来实现。请在Wordpress根目录的index.php的一开始加上这段代码。
$i= isset($_SERVER['HTTP_X_FORWARDED_HOST']) ? $_SERVER['HTTP_X_FORWARDED_HOST'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '');
switch ($i)
{
case "www.iron-feet.cn":
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.iron-feet.com".$_SERVER["REQUEST_URI"]);
exit();
break;
case "iron-feet.cn":
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.iron-feet.com".$_SERVER["REQUEST_URI"]);
exit();
break;
}
当然以上的操作实现的另外一个前提是,您的旧域名近期依然指向该站点。其实301跳转不但是对搜索引擎收录有帮助,同样也能够及时告诉关注您网站的朋友们您已经更换域名了。
- 利用Google的Webmaster Tool
具体操作就不再赘述,请参见Google的帮助文档。
- Sitemap地址的修改
由于通常Robots.txt中Sitemap的地址都是写的绝对地址,所以更改域名后,千万不要遗忘更新您的Sitemap地址,以便Google可以及时抓取您的更新日志。
当然如果您是用Wordpress的Google SiteMap插件,并且勾选了“Add sitemap URL to the virtual robots.txt file.”,那您就可以安逸地不用担心Sitemap的地址问题了。
- Feed的更新:
相信很多博主都喜欢用Feedsky和Feedburner来管理自己的Feed,因此修改域名后,你需要将Feedsky和Feedburner指向您新的Feed地址。这样就不会影响朋友们继续及时关注您的文章了,嚯嚯!
- 适当的代码修改:
通常情况下,我们写代码都是能利用相对路径是最好的,因为这样子兼容性比较好。但是有时候遇到想Sitemap之类的需要用绝对地址的,或者个别朋友因为编程习惯有所欠缺而引起的一些域名更换的不兼容问题,那就需要稍微对代码进行修改一下。
- 工具的再配置:
Google Analytics和Google Webmaster这类工具在我看来,是建站必不可少的工具。所以更换域名过后对这些工具的在配置也是必需的。他能让你很快的知道最近站点的状态等等。
具体只能想到的就是这些了,如果有什么遗漏的和错误的请大家提出,谢谢!
PS:元旦快到了,祝大家新年快乐,万事如意!
以下更新于2009/12/29 21:40
如果您使用了Mail to Commenter之类的邮件插件,记得将源代码中的邮箱地址更新为您的新域名。例如我的就是从noreply@iron-feet.cn改为noreply@iron-feet.com。同样记得在你的空间邮件服务器添加上该邮箱帐户。
Updated on Oct. 13,2009: 增加了对iNove 中鼠标悬浮显示 @ 评论的介绍
经常看到很多用Wordpress建站的朋友们喜欢将自己使用的插件,做个列表共享给大家。
索性今天我也随大流一下,将我用的插件列表罗列一下。
以下插件按照首字母顺序排列:
长期处于激活状态的的插件
- About Me 3000
请各位看风云阁右侧边栏中,有我的头像和自我介绍的那块区域,这就是“About Me 3000”这款插件的功能了。它能够让你轻松的在侧边栏建立一个自我介绍的widget,在里面你可以添加文字,也可以添加你所参与过的网络应用,如Twitter、Facebook等等。由于这款插件是一位老外写的,因此本站右侧栏中豆瓣等应用是我稍微根据自己需要修改了一下实现的。
- AddThisChina
相信各位都看到我每篇日志开头的那个分享按钮了吧,就在这个插件的功能。
- Akismet
这款插件自然不用多说了吧,只能用官方的Wordpress包搭建的站点,必定默认有这个插件。既然它被Wordpress官方认可,也必定有他的优势,他对spam的拦截那算是非常的精准。
- All in One SEO Pack
这个插件也算是鼎鼎大名了,基本上用Wordpress建站的同仁们,不论懂不懂SEO,都多少会用一下,嚯嚯!
不过该插件的作者不是很厚道,经常利用恶意更新来刷插件的排名
- Clean Archives Reloaded
能生成一个,可以折叠和扩展的基于JS的文档列表,具体参见Achives页
- Custom Headers and Footers
相信建站的朋友多少会使用一些工具,如 Google Webmaster 或者 Google Analytics 等等
使用这些工具都需要在根目录放入验证页面,或者在 meta 里面写入验证信息。我有时会采用后者,这样我就需要在主题的 meta 里面写入信息。我一直觉得这是个很麻烦的事情。
有了这个插件之后,我们只需要在后台里面添加好,他会自动把你的新 meta 信息写入主题的 meta 中,非常方便。
插件如其名,它也可以自动帮你在 header 和 footer 里面都写入你需要的东东。
- Custom URL Shorter
自己写的插件,当然要自己支持一下的说。主要是为post或者page生成一个短链接。实例,直接见我页面的Short URL链接就是了,已上传至Wordpress.org
- Custom Smilies
大家可以把目光移至本博的评论区,评论输入框上面的表情栏就是这个插件的功劳了,嚯嚯!
- Dean’s Permalinks Migration
也许很多朋友和我有一样的经历。刚开始用Wordpress建站的时候使用Wordpress默认是的permalink structure,即/?p=$post-id。这显然是个对SEO非常不友好的链接。但由于建站已经很久,没法鼓起勇气更换新的链接结构。生怕更新了新的链接后,旧的链接就失效了,影响网站的外链。Dean’s Permalinks Migration让我们不再有这个烦恼,通过简单的设置之后,你即使修改了你的链接结构,你的旧链接也依然有效,他会将你的旧链接重定向到新的链接之上,非常实用。
- Exec-PHP
非常实用的一个插件,可以让你在发表日志或者页面的执行,直接输入PHP代码执行,可以达到很多插件和标签达不到的效果,我的Catagories页就是录用这个插件实现的,代码如下:
<ul>
<?php
wp_list_categories('orderby=name&title_li=');
?>
</ul>
- FeedBurner FeedSmith
喜欢用FeedBurner烧制Feed的朋友们肯定都喜欢这个插件,这个插件可以将Wordpress原生的Feed地址全部重定向到你事先设置好的FeedBurner烧制的Feed地址。非常方便你对Feed进行管理和统计。
- GD Press Tools
非常强大的一个Wordpress管理套件,包括统计、SEO、清理等等很多功能。不过我基本只用他的一个功能就是删除Wordpress自动保存而产生的revision。
- Google Analytics for WordPress
Google Analytics可谓是现在最受欢迎的企业级网络分析解决方案了,而且是免费的。这个插件免去可以Wordpress手动在模板中添加GA跟踪代码的麻烦。
- Google XML Sitemaps
对于已将网站登录到各大搜索引擎的朋友来说,这款插件可谓是福音。他会在发布新日志或者新页面的时候,第一时间将你网站的sitemap递交到一些比较受欢迎的搜索引擎。
- Mail To Commenter
这个是一个非常不错的用了提高回头率的插件。
当你对评论区的评论回复之后,改插件会自动向该留言者发送一个提醒邮件,非常好用~
- Ozh’ Better Feed
可以在一定程度上,对你的Feed进行一些更改,比方说添加一些自定义信息、版权信息等等
- Simple Tags
这个插件在Tags方面有很多用处,而我呢,只用它来生成标签云,见Tag Cloud页,以前也曾用过wp-cumulus这款插件,它能生成一个很漂亮的3D的Flash标签云,后来发现它会很明显拖慢我网站的速度,因而弃之
- Thread Twitter
功能和他的名字一样,可以让你的站点有Twitter的交互功能。它会利用Wordpress所在的主机对Twitter的数据进行处理,因此如果是国外主机的朋友不用担心Twitter被墙而不方便登录了。效果见My Twitter页
- TinyMCE Advanced
能让后台的TinyMCE编辑器变得功能更强大
- Use Google Libraries
我曾在曾经的一篇日志介绍过,在此不赘述了。
- WordPress Database Backup
定期帮我备份我的数据库并发送到我的邮箱里,对于我这种有心理阴影的人,这个插件能让我安心好多
Wordpress PDA & iPhone
如果,别人用手机看我站点,它会将我的站点应用一个更适合手机看的主题。由于和目前新版本Wordpress不兼容,已停用
Wordpress Thread Comment
鼎鼎大名了。自从有了它Wordpress的评论变成了交互式的了。自从使用了iNove 中鼠标悬浮显示 @ 评论之后就不再考虑这个插件了
- WordPress Related Posts
顾名思义:它能为您生成一个相关日志列表,您可到我的任何一个日志页面看到效果。当然如果你凑巧看到的不是相关日志而是随机日志,那是因为我设置了,如果没有相关日志,显示随机日志
- WP-reCAPTCHA
一个能为人类图文校正事业做贡献的插件,具体参见reCAPTCHA页
- WP-CodeBox
对我这种喜欢把代码贴到Blog上的人,这个插件是必不可少的,那可以将我的代码,按照语法进行不同的着色。使代码看起来更直观。例如本日志前面的PHP代码,嚯嚯
- WP Smiley Switcher
把Wordpress原生的表情换的更可爱些,原生不好看。
- WP-Clap
很可爱的一个插件,觉得好玩就安装了。并不是所有人在读完日志后都会留言,没有留言你不能知道有谁读了你的博客,日志也容易出现冷场现象。WP-Clap(拍手插件)会为你的日志增加一个拍手栏目,你的读者读完日志后可以随手点一下链接,以示路过,减少冷场现象。
- WP Super Cache
又一个鼎鼎大名的,总而言之,言而总之,它能将Wordpress站点尽最大可能的静态化。减小服务器负担,减小浏览者等待时间。
定期使用或者以备不时之需的插件
总是告诉自己要让自己的插件尽量,但是有些插件实在是太棒了,让我实在是忍不住用一下,嚯嚯。
此帖就当对一些好插件进行一个笼统的介绍,同时也对各位作者们进行一下感觉。Thank you!
本人写的第一个Wordpress的插件——Custom URL Shorter诞生了
- 起因:最近突然一些原因要在自己的风云阁添加短地址链接,因此就萌生了写这个插件的想法。今天在工作的休息时间写了这个插件的第一个版本。
- 版本号:0.3.1。
09年8月11日23:30更新
- 功能:
- 可以在多个短地址服务中选取自己喜欢的服务进行使用,也可以选择列表中没有的服务
- 可以对链接文字进行设置
- 可以发布日志或者页面的时候通过
来实现短域名链接生成
- 可以通过直接修改模板添加
<?php custom_url_shorter(); ?>
来实现短地址链接的生成
- 安装与使用
- 下载Custom URL shorter。
- 上传Custom URL shorter文件夹到你的插件目录下。
- 在WordPress后台插件菜单下激活Custom URL shorter。
- 转到Setting => Custom URL shorter,进行设置。
- 创建 WordPress 页面模板,在该模板中加入下面函数:
<?php custom_url_shorter(); ?>
或者创建新日志或者页面时,在内容中添加
- 备注
由于某次的服务器突然当机,造成了我的风云阁一个多星期处于无法访问状态。
当时因为着急,我做了一个让我现在很后悔的决定,购买了一个便宜的国内主机。
经过了大半年的使用过后,我实在是不能忍了。
主要原因如下:
- 由于主机是使用的IIS,导致我一直无法使用WP Super Cache这个牛X插件。WP Super Cache是使用Apache的Rewrite模块进行工作的,不支持IIS的Rewrite功能。而且这个麻烦的国内主机,也压根没给IIS安装针对IIS的Rewrite模块——ISAPI_Rewrite
- 主机的数据库性能实在是让我不能恭维,如果我对数据库操作稍微频繁一点,比方说删除大批spams或者是对大批日志的分类等进行批量修改,就开始卡了,主页打开极慢。
- 主机本身性能也不好,我一旦在用FTP向空间上传东西,立马开始卡,回报我的就是主页打开极慢
- 我曾试图通过安装Use Google Libraries等插件来减轻服务器负担,可惜依然艰难。由于没有ISAPI_Rewrite我也无法实现兼容IIS的WP Super Cache
在这万般无奈之下,我只能又再一次麻烦的将我的整站暂时搬迁到了一个国外的免费空间
新的空间是LAMP的,所以我很high地用上了WP Super Cache。由于WP Super Cache和WP Post-rating插件不兼容,所以我把后者禁用了。后者的功能就是给日志评分,没什么大用处,当初用这个插件也是一时新鲜觉得好玩而已。
由于我是整站搬迁,一般情况下,表面上看各位不会发现换服前后有什么区别。
目前为止没有发现什么太大的问题,如果各位发现有什么问题请告知谢谢!
自从某次同学的服务器出了问题之后,我就把Blog搬到了这个虚拟主机里面,并一直沿用到现在。
不过这个虚拟主机的性能实在不行,经常会出现卡机现象,让我非常无奈。
经Solrex的推荐,我一直打算试用一下Use Google Libraries这个插件。
根据“3 reasons why you should let Google host jQuery for you”这篇文章中提到它的作用有三:1、减少传输时间;2、提高并行性能;3、更易于缓存。
今天正好试用一下,感觉在并行性能和缓存方面的确是有了不小的提升,对主机的负担也减小了,不再需要从主机下载AJAX库了。
但是在“减少传输时间”方面我不敢苟同,也许使用国外主机的朋友会体验到传输时间上的减少,但是如果使用的是国内主机,时间上的减少是很小的,有时候甚至还是增加少许传输时间。
不过呢,鉴于他能在一定程度上减少主机的负担,我还是决定继续使用这个插件了,嚯嚯
经过各处调研,在网上找了两份Wordpress 2.8的兼容插件列表,然后终于决定把我的Wordpress 2.7.1更新到Wordpress 2.8。
目前我所用的插件更新到最新版本的,均未出现兼容问题。
后台变化还挺大的,插件和主题的管理比原来方便多了~
Dashboard的布局自由度也更大了。
Wordpress每次更新都能给我惊喜,太棒了!
另外附上Wordpress官方和Bravenewcode的兼容列表地址,希望对大家有帮助!
由于本人的手机是Windows Mobile 6.5的系统,我总是试图找到一款支持WM的对Wordpress操作的软件。但一直找不到,无奈之下,正好运用一下比较喜欢的Linq来实现一下。
在此,正好讲讲XML-RPC以及它与Wordpress关系。
对Wordpress进行操作,除了通过他的Web后台外,还有一种方法就是通过XML-RPC来实现。
关于XML-RPC我就不再赘述了,简单的来说就是:将包含着操作命令和操作数据的XML通过Http传输给XML-RPC Server。然后Server根据此XML分析出来的命令和数据进行操作,然后返回用户一个XML,里面包含了用户所需要数据的XML。
拿Wordpress自身的wp.getUsersBlogs命令举例
wp.getUsersBlogs
Retrieve the blogs of the users.
Parameters
- string username
- string password
Return Values
- array
- struct
- boolean is_admin
- string url
- int blog_id
- string blog_name
- string xmlrpc_url
以上is_admin是表示该用户是否为管理员,url当然是你的博客地址,blog_id指的是博客的id到后面有用,blog_name指的是博客名(比方说我的是“风云阁”),xmlrpc_url是XML-RPC Server的地址。
值得一提的是,针对Wordpress而言,如果你的博客地址是http://www.xxx.com,则他的XML-RPC Server地址是http://wwwxxx.com/xmlrpc.php。
它的输入XML是
<methodCall>
<methodName>wp.getUsersBlogs</methodName>
<params>
<param>
<value>
Username
</value>
</param>
<param>
<value>
Password
</value>
</param>
</params>
</methodCall>
以上的Username当然就是用户名了,Password当然就是你的密码,wp.getUsersBlogs是获得Blog的操作名。
当正确的时候返回的XML是(以我为例)
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>isAdmin</name>
<value>
<boolean>1</boolean>
</value>
</member>
<member>
<name>url</name>
<value>
<string>http://www.iron-feet.cn/</string>
</value>
</member>
<member>
<name>blogid</name>
<value>
<string>1</string>
</value>
</member>
<member>
<name>blogName</name>
<value>
<string>风云阁</string>
</value>
</member>
<member>
<name>xmlrpc</name>
<value>
<string>http://www.iron-feet.cn/xmlrpc.php</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
当用户名和密码出错的时候的XML是
<methodResponse>
<fault>
<value>
<struct>
<member>
<name>faultCode</name>
<value>
<int>403</int>
</value>
</member>
<member>
<name>faultString</name>
<value>
<string>Bad login/pass combination.</string>
</value>
</member>
</struct>
</value>
</fault>
</methodResponse>
根据Wordpress官方网站,Wordpress还支持Blogger API、MetaWeblog API以及Movable Type API
WordPress uses an XML-RPC interface. We currently support the Blogger API, metaWeblog API, and the Movable Type API.
各位看官们可以通过相关文档以及我上面的结构,获得正确的XML
自从有了Linq,很多东西变得非常方便了,比方说构造XML。接下来,介绍一下如果利用C#语言通过Linq构造XML,
比方说刚刚那个wp.getUsersBlogs的XML,构造代码如下:
XElement XmethodCall=
new XElement("methodCall",
new XElement("methodName", "wp.getUsersBlogs"),
new XElement("params",
new XElement("param",
new XElement("value",
new XElement("string", _strUsr)
)
),
new XElement("param",
new XElement("value",
new XElement("string", _strPwd)
)
)
)
);
如何通过C#发送Post,方法如下:
XElement Post(XElement XmethodCall)
{
WebRequest req = WebRequest.Create(strXmlRpc);//strXmlRpc是XML-RPC Server的地址,例如:我的就是http://www.iron-feet.cn/xmlrpc.php
req.ContentType = "application/x-www-form-urlencoded";
req.Method = "POST";
byte[] bytes = System.Text.Encoding.ASCII.GetBytes(XmethodCall.ToString());
req.ContentLength = bytes.Length;
System.IO.Stream os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length);
os.Close();
System.Net.WebResponse resp = req.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
XElement tempX=XElement.Parse(sr.ReadToEnd().Trim());
var query = tempX.Elements("fault").Elements("value").Elements("struct").Elements("member").Elements("name");
foreach (XElement x in query)
{
if (x.Value == "faultString")
{
throw new Exception(x.Parent.Elements("value").First().Value);
}
}
if (tempX.Name.ToString()== "methodResponse")
{
return tempX;
}
else
{
throw new Exception("This is not an XML-RPC server!");
}
}
小小的介绍结束了。
接下来提一下昨天和今天的工作。主要是写了个Linq2XMLRPC的类库,顺便做了个针对Windows Mobile进行Wordpress博客操作的GUI的雏形,这个GUI调用的就是我自己写的Linq2XMLRPC。目前日志和分类的一些操作已经成功实现。目前发现的最大问题感觉是局限于手机上网速度的限制,发表日志等待时间很长
有空得研究研究手机上网的数据压缩问题
Wordpress2.7发布了。我的blog后台也随之更新了。
大更新阿,很棒,改变了很多,越来越好了。
所有旧插件都支持,除了有提示Admin Management Xtended这个插件没必要使用。因为新的Wordpress已经拥有了这个插件的功能。
很好很强大
Recent Comments