您的位置:首页»WordPress 教程»  打造 WordPress 的简易短网址

打造 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)

8个评论

  • Reply 1 辐射鱼

    August 14th, 2009 at 21:04

    一篇文章多个地址最不利于seo了,如果将短网址链接大盘站外,效果似乎更好些,比如go/wordpress就跳转到wordpress.org

    • Reply 2 Showfom

      August 15th, 2009 at 02:59

      所以全部 no follow~哈哈

  • Reply 3 Showfom

    August 15th, 2009 at 04:14

    不放心的,在robots.txt里加上 Disallow: /go/

  • Reply 4 西风

    August 24th, 2009 at 11:31

    又是showfom这个MJJ的

  • Reply 5 basky

    August 27th, 2009 at 10:09

    博主,能不能给我一份你博客的主题呢?如果可以的话,发我邮箱
    先谢谢了

    • Reply 6 辐射鱼

      August 27th, 2009 at 19:04

      付费主题,暂不免费发放

  • Reply 7 博世热水器维修

    September 4th, 2009 at 11:47

    好东西,当然不能免费啦,不过等下个好东西出来的时候,博主肯定会舍得的啦

  • Reply 8 tangzhehao

    February 10th, 2010 at 15:57

    Nginx就是规则麻烦。不能像Apache一样自动生成。