先热身一下:微博URL短网址生成算法原理及(java版、php版实现实例)
wordpress版本请看 http://zhangge.net/5086.html

第一篇:

打开var/Widget/Abstract/Comments.php文件,寻找

if ($this->url && $autoLink) {    
            echo '<a href="' , $this->url , '"' , ($noFollow ? ' rel="external nofollow"' : NULL) , '>' , $this->author , '</a>';    
        } else {    
            echo $this->author;    
        }

修改为

if ($this->url && $autoLink) {    
            if(strpos($this->url, $this->options->siteUrl)!==false) {    
                echo '<a href="', $this->url, '">', $this->author, '</a>';    
            } else {    
                echo '<a href="', $this->options->siteUrl, 'go.html?url=', urlencode($this->url), '"', ' rel="nofollow"', '>', $this->author, '</a>';    
            }    
        } else {    
            echo $this->author;    
        }

跳转页采用的是html静态页+javescript方式跳转,你也可以改用php方式,我的跳转go.html代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">    
<html xmlns="http://www.w3.org/1999/xhtml">    
<head profile="http://gmpg.org/xfn/11">    
 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />    
 <title>Microhu's Blog - 正常跳转</title>    
 <style type="text/css">    
    #show{width:500px;margin:100px auto 0;font-size:18px;color:blue;}    
    #show span{color:red;font-weight:blod;}    
 </style>    
</head>    
<body>    
<div id="show"></div>    
 <script type="text/javascript">    
 <!--    
    function getUrl(){    
        var theUrl=location.href.split('?url=');    
        if(theUrl.length==1)    
            return 'http://www.microhu.com';    
        return decodeURIComponent(theUrl[1]);    
    }    
    var showme=document.getElementById('show');    
    showme.innerHTML='正在为你跳转到:<span>'+getUrl()+'</span>';    
    location=getUrl();    
 //-->    
 </script>    
</body>    
</html>

方法来自:@羊窝 (已关?)

第二篇:

简单方法,不用插件实现外链转内链
typecho可以自定义404页面,通过404.php即可不用插件实现外链转内链
首先,在模板目录下建立一个空的php文件:url.php,写入以下内容:

<?php 
return array(
//此处以下为内链“链接地址”=>“外链地址”,依次添加自定义的转向。
    'key'    => 'your url here',
    'weibo'    => 'http://weibo.com',
    'typecho'    => 'http://typecho.org',
    'google'    => 'http://google.come',
);
?>

也就是建立一个返回数组的php文件,通过array[key]来实现读取url,以达到目的。
创建404.php页面,如果有,则直接打开编辑,在最上方加入如下代码:

$tempStr = str_replace("/index.php","",$_SERVER['REQUEST_URI']);
    $action = substr($tempStr,1,2 );
    if( $action == "go" ){
        $urlArr = include_once 'tpl_url.php';
        $query = trim(substr($tempStr,4),"/");
        foreach($urlArr as $key=>$value){$arr[]=$key;}
        if(in_array($query,$arr)){
            header("Location: ".$urlArr[$query]);
        }
    }

上传,在后台“控制台”-》“网站外观”-》“编辑当前外观” 中,找到url.php,在里面修改添加自己要生成的外链转向。
如上,http://m69w.com/go/typecho 即可转向到 http://typecho.org; http://m69w.com/go/google 即转向到 http://google.com
添加自己的转向吧。


第三篇:

插件实现:
GoLinks.0.3.0
LinksRedirect(v1.0.1).zip
ShortLinks - 外链转内链,支持正文和评论者链接

第四篇

确切的说没有四的,插件+张戈博客那个JS版本
typecho.conf中添加rewrite ^/go/(.*)$ /go.html?url=$1 last;,如下

if (!-e $request_filename){
    rewrite ^/go/(.*)$ /go.html?url=$1 last;
    rewrite (.*) /index.php;
    }

在ShortLinks插件中Plugin.php的108,114行改为对应就行了,简直简单粗暴
ShortLinks插件是带301重定向的,在Action.php中,视情况删留

标签:typecho

你的评论