dedecms织梦跳转终极修改:使用自定义文件名,外链伪静态和新浪微博一样,适合做淘宝客、外链推广等网站

最近用dedecms做了好多站,在仿一个外国的索引一样的外链站时候,跳转需要优化一下,网上看了很多文章,都是用view-开头的,不够好,如果要用自定义文件名作为跳转地址,dedecms如果做呢。该站外观功能如图所示:

如上图,比较简单,列表页是/r/LMFTQM这样的跳转链接,没有详情页。

做好的站外链也差不多,而且/r也去掉了。默认的跳转链接不是这样的,必须要改一下程序。

现在说一下终极修改方法,我用的是dede5.7utf8版的,其他版本可能要变通一下:

首先,要到系统--系统基本参数--核心设置里面把是否使用伪静态开启,这样[field:arcurl/]才会使用静态化的文章地址。

接着,打开include\helpers\channelunit.helper.php找到下面的if语句改成这样:

      //作者:apple0280
      //qq:71780795
      //博客园:http://www.cnblogs.com/kuhp/
      //电子邮件:71780795@qq.com
 1    //动态文章
 2            if($cfg_rewrite == 'Y')
 3             {
 4     //return $GLOBALS["cfg_plus_dir"]."/view-".$aid.'-1.html';
 5     $dsql = new DedeSql(false); 
 6     $dsql->SetQuery("SELECT filename FROM #@__archives WHERE id=".$aid);
 7     $dsql->Execute();
 8     $co=0;
 9     $row=$dsql->GetOne();
10     $filename=$row['filename'];
11     $dsql->SetQuery("SELECT * FROM #@__archives WHERE flag='j' and filename='".$filename."'");
12     $dsql->Execute();
13     $row2=$dsql->GetTotalRow();
14    if($filename&&$row2==1) return '/'.$filename;
15    else return "/view-".$aid;
16             }

原来的地址是:/plus/view-1-1.html

现在解析成你在文章里设定的/LMFTQM,只要自定义文件名写上LMFTQM,如果跳转文章里的自定义文件名重复或者为空,则采用/view-1作为路径。

显示层就做好了,现在应用层:

我们要改一下根目录的伪静态文件,lunix的.htaccess我是这样的:

      //作者:apple0280
      //qq:71780795
      //博客园:http://www.cnblogs.com/kuhp/
      //电子邮件:71780795@qq.com
 1 <IfModule mod_rewrite.c> 
 2 RewriteEngine On 
 3 RewriteCond %{http_host} ^cbankmall.com [NC] 
 4 RewriteRule ^(.*)$ http://www.cbankmall.com/$1 [L,R=301] 
 5 RewriteRule ^list-([0-9]+)\.html$ /plus/list.php?tid=$1 
 6 RewriteRule ^list-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /plus/list.php?tid=$1&totalresult=$2&PageNo=$3 
 7 RewriteRule ^view-([0-9]+)-1\.html$ /plus/view.php?aid=$1
 8 RewriteRule ^view-([0-9]+)$ /plus/view.php?aid=$1
 9 RewriteRule ^([0-9a-zA-Z\-\_]+)$ /plus/view.php?f=$1
10 RewriteRule ^view-([0-9]+)-([0-9]+)\.html$ /plus/view.php?aid=$1&pageno=$2 
11 RewriteRule ^sitemap\.xml$ /sitemap.php 
12 </IfModule>

如果是iis,httpd.ini可以这样写(暂未验证正确性):

 1 [ISAPI_Rewrite]
 2 # 缓存3600秒 = 1 小时(hour)
 3 CacheClockRate 3600
 4 RepeatLimit 32
 5 #dedecms Rewrite规则
 6 #RewriteRule ^(.*)/index\.html $1/index\.php
 7 RewriteRule ^(.*)/list-([0-9]+)\.html $1/plus/list\.php\?tid=$2
 8 RewriteRule ^(.*)/list-([0-9]+)-([0-9]+)-([0-9]+)\.html $1/plus/list\.php\?tid=$2&TotalResult=$3&PageNo=$4
 9 RewriteRule ^(.*)/view-([0-9]+)-1\.html $1/plus/view\.php\?aid=$2
10 RewriteRule ^(.*)/view-([0-9]+) $1/plus/view\.php\?aid=$2
11 RewriteRule ^(.*)/([0-9a-zA-Z-_]+) $1/plus/view\.php\?aid=$2
12 RewriteRule ^(.*)/view-([0-9]+)-([0-9]+)\.html $1/plus/view\.php\?aid=$2&pageno=$3
13 RewriteRule ^(.*)/sitemap\.xml $1/sitemap\.php

这里注意,list那几行我的站没用到,因为列表的栏目我链接到默认页,没有使用动态页。

然后,我要用/plus/view.php解析。打开这个文件改一下:

在require_once(DEDEINC.'/arc.archives.class.php');

后面加上以下几行代码:

 1 //作者:apple0280
 2 //qq:71780795
 3 //博客园:http://www.cnblogs.com/kuhp/
 4 //电子邮件:71780795@qq.com
 5 if($f){
 6     $dsql = new DedeSql(false); 
 7     $dsql->SetQuery("SELECT id FROM #@__archives WHERE flag='j' and filename='".$f."'");
 8     $dsql->Execute();
 9     $row=$dsql->GetOne();
10     if($row['id'])$aid = $arcID=$row['id'];
11     }

 

这时候就可以看到http://www.yishile.com/LMFTQM这样的链接。

到此,大功告成了,有问题大家可以留言。

posted on 2012-04-21 02:22  kuphp  阅读(1762)  评论(0编辑  收藏  举报

导航