打造 WordPress 的简易短网址
WordPress 2.8 以后,Permalink 系统已经很完美了,系统能自己判断错误的地址并且指向一个可能存在的地址,举个例子:
比如,这个文章地址并不存在:http://showfom.com/wo/ 但是 访问以后,WordPress 会判断最接近的地址,所以,就跳转到了 http://showfom.com/wordpress-28-released/ ,嗯,很智能吧?这样能有效防止损失的流量。
同样,以前我推荐过 Permalink Redirect 插件,目的是为了防止访问类似 http://showfom.com/?p=1 这样的地址时能自动跳转到自定义的 Permalink,而 WordPress 2.8 以后,根本用不着 Permalink Redirect 插件 ,因为内置的 Rewrite系统 已经能自动301跳转,根本用不着插件的支持,所以,就衍生了这篇文章。
我重点要讲的是如何利用 WordPress 打造一个简易的短网址,为每篇文章都建立一个短网址,而且增加一个 Retweet 链接,下面,就听 Showfom 小帅锅一一道来:
我们知道,默认没有自定义永久链接的时候,WordPress 每个文章的访问地址是类似于 http://showfom.com/?p=81 这样的,而 WordPress 2.8+ 的 Rewrite 机制完美地解决了301跳转问题,所以,利用这一点,我们可以为每个文章都弄一个类似 http://showfom.com/go/81 这样的短网址.
方法如下,Apache 主机的,打开根目录的 .htaccess 文件,输入这两行:
# Redirect posts based on post-id RewriteEngine On RewriteRule ^go/([0-9]+)$ ?p=$1 [R=301,L]
通常因为开启了永久链接,所以 RewriteEngine On 本身存在,那么只要把 RewriteRule ^go/([0-9]+)$ ?p=$1 [R=301,L] 加入到 RewriteEngine On 这样下面即可。
这时候,测试一下,是否可以用 http://showfom.com/go/81 这样的网址来访问,测试结果很让人满意。
我们知道,这个81是个postid,那么,如何让他自动在模板中显示呢?用到一个函数即可:
<?php the_ID(); ?>
很神奇吧?
这样,我们在模板的 single.php 里适当位置(一般是<?php the_content(” “); ?>这个函数下方合适)增加一行代码:
<br />
本文短网址:<a href=”<?php echo get_option(‘home’); ?>/go/<?php the_ID(); ?>” title=”<?php the_title(); ?>” rel=”external nofollow” ><?php echo get_option(‘home’); ?>/go/<?php the_ID(); ?></a>
(注意标点,要用英文输入法状态下的引号)
当然,有了这个简易的短网址,我们用来干什么呢?废话,当然是发布在Twitter等微博上了,然后,我们就加一条Retweet的链接:
如果你觉得本文很可爱,请使用 Twitter 来 RT 本文:<a href=”https://twitter.com/home?status=RT @Showfom : <?php the_title(); ?> <?php echo get_option(‘home’); ?>/go/<?php the_ID(); ?>” title=”Tweet this post”>ReTweet This</a>
自行修改 @Showfom 为自己的 Twitter 账户名,样式可以自己写一个,为了简洁我就不写了,效果参考本文下方的 ReTweet This 字样即可。
===
PS:我知道很多人有洁癖,非得用个.html结尾,那么.htaccess规则就是
RewriteRule ^go/([0-9]+)\.html$ ?p=$1 [R=301,L]
这样就可以通过 http://showfom.com/go/81.html 来访问本站
还有人和我一样有洁癖,非得在链接最后加个斜杠,那么.htaccess规则就是
RewriteRule ^go/([0-9]+)\$ ?p=$1 [R=301,L]
这样就可以通过 http://showfom.com/go/81/ 来访问本页
===
再次PS:Nginx 下的规则分别是:
rewrite ^/go/([0-9]+)$ /?p=$1 permanent;
break;
rewrite ^/go/([0-9]+)\$ /?p=$1 permanent;
break;
rewrite ^/go/([0-9]+)\.html$ /?p=$1 permanent;
break;
再推荐一个在线转换 Apache 的 .htaccess 和 Nginx 伪静态规则的网站:http://www.anilcetin.com/convert-apache-htaccess-to-nginx/
===
再再次PS:因为短网址的原理是301转向,所以害怕搜索引擎的童鞋就别冒险了哈哈。
(Via)


1 辐射鱼
August 14th, 2009 at 21:04
一篇文章多个地址最不利于seo了,如果将短网址链接大盘站外,效果似乎更好些,比如go/wordpress就跳转到wordpress.org
2 Showfom
August 15th, 2009 at 02:59
所以全部 no follow~哈哈
3 Showfom
August 15th, 2009 at 04:14
不放心的,在robots.txt里加上 Disallow: /go/
4 西风
August 24th, 2009 at 11:31
又是showfom这个MJJ的
5 basky
August 27th, 2009 at 10:09
博主,能不能给我一份你博客的主题呢?如果可以的话,发我邮箱
先谢谢了
6 辐射鱼
August 27th, 2009 at 19:04
付费主题,暂不免费发放
7 博世热水器维修
September 4th, 2009 at 11:47
好东西,当然不能免费啦,不过等下个好东西出来的时候,博主肯定会舍得的啦
8 tangzhehao
February 10th, 2010 at 15:57
Nginx就是规则麻烦。不能像Apache一样自动生成。