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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

后面加上以下几行代码:

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

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

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

赞(0) 打赏
分享到: 更多 (0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏