phpcms网站更换域名 url自动更新

1、运用动态的方法获取域名链接,不再使用生成静态的index.html访问,只要是绑定到域名到根目录都是可以自动获取到域名的,这样我们就很省事了,找到modules/content
/index.php找到__construct函数,然后在末尾添加一下代码:

 1 function __construct() {
 2         $this->db = pc_base::load_model('content_model');
 3         $this->_userid = param::get_cookie('_userid');
 4         $this->_username = param::get_cookie('_username');
 5         $this->_groupid = param::get_cookie('_groupid');
 6         //动态获取域名链接 start by DongGe 2016-06-17 
 7         $sitelist = getcache('sitelist','commons');
 8         foreach($sitelist as $siteinfo){
 9             if($siteinfo['domain']=='http://'.$_SERVER['HTTP_HOST'].'/'){                
10                 $this->siteid =$siteinfo['siteid'];
11             }            
12         }
13         /***end 2016-06-17**/
14     }

2、做完了第一步还没有完成我们的步骤哟,还要修改栏目的获取url的优化哟,找到
Modules/admin/category.php找到repair函数中的$url = APP_PATH.$url;代码删除掉或者是注释即可

 1 /**
 2     * 修复栏目数据
 3     */
 4     private function repair() {
 5         pc_base::load_sys_func('iconv');
 6         @set_time_limit(600);
 7         $html_root = pc_base::load_config('system','html_root');
 8         $this->categorys = $categorys = array();
 9         $this->categorys = $categorys = $this->db->select(array('siteid'=>$this->siteid,'module'=>'content'), '*', '', 'listorder ASC, catid ASC', '', 'catid');
10         
11         $this->get_categorys($categorys);
12         if(is_array($this->categorys)) {
13             foreach($this->categorys as $catid => $cat) {
14                 if($cat['type'] == 2) continue;
15                 $arrparentid = $this->get_arrparentid($catid);
16                 $setting = string2array($cat['setting']);
17                 $arrchildid = $this->get_arrchildid($catid);
18                 $child = is_numeric($arrchildid) ? 0 : 1;
19                 if($categorys[$catid]['arrparentid']!=$arrparentid || $categorys[$catid]['arrchildid']!=$arrchildid || $categorys[$catid]['child']!=$child) $this->db->update(array('arrparentid'=>$arrparentid,'arrchildid'=>$arrchildid,'child'=>$child),array('catid'=>$catid));
20 
21                 $parentdir = $this->get_parentdir($catid);
22                 $catname = $cat['catname'];
23                 $letters = gbk_to_pinyin($catname);
24                 $letter = strtolower(implode('', $letters));
25                 $listorder = $cat['listorder'] ? $cat['listorder'] : $catid;
26                 
27                 $this->sethtml = $setting['create_to_html_root'];
28                 //检查是否生成到根目录
29                 $this->get_sethtml($catid);
30                 $sethtml = $this->sethtml ? 1 : 0;
31                 
32                 if($setting['ishtml']) {
33                 //生成静态时
34                     $url = $this->update_url($catid);
35                     if(!preg_match('/^(http|https):\/\//i', $url)) {
36                         $url = $sethtml ? '/'.$url : $html_root.'/'.$url;
37                     }
38                 } else {
39                 //不生成静态时
40                     $url = $this->update_url($catid);
41                     $url = '/'.$url;//$url = APP_PATH.$url;// note by DongGe 2016-06-17
42                 }
43                 if($cat['url']!=$url) $this->db->update(array('url'=>$url), array('catid'=>$catid));
44                 
45                 
46                 
47                 if($categorys[$catid]['parentdir']!=$parentdir || $categorys[$catid]['sethtml']!=$sethtml || $categorys[$catid]['letter']!=$letter || $categorys[$catid]['listorder']!=$listorder) $this->db->update(array('parentdir'=>$parentdir,'sethtml'=>$sethtml,'letter'=>$letter,'listorder'=>$listorder), array('catid'=>$catid));
48             }
49         }
50         
51         //删除在非正常显示的栏目
52         foreach($this->categorys as $catid => $cat) {
53             if($cat['parentid'] != 0 && !isset($this->categorys[$cat['parentid']])) {
54                 $this->db->delete(array('catid'=>$catid));
55             }
56         }
57         return true;
58     }

 

3、为了避免根环域名后需要批量更换,所以我们需要进入到后台进行设置,后台设置-基本设置-基本配置-附件URL访问路径,去掉网址部分即可

4.内容页链接使用相对地址,不加网址代码修改位置:modules/content/classes/
url.class.php找到以下代码将其中的 APP_PATH 改为 ‘/’即可:

 1 /**
 2      * 内容页链接
 3      * @param $id 内容id
 4      * @param $page 当前页
 5      * @param $catid 栏目id
 6      * @param $time 添加时间
 7      * @param $prefix 前缀
 8      * @param $data 数据
 9      * @param $action 操作方法
10      * @param $upgrade 是否是升级数据
11      * @return array 0=>url , 1=>生成路径
12      */
13     public function show($id, $page = 0, $catid = 0, $time = 0, $prefix = '',$data = '',$action = 'edit',$upgrade = 0) {
14         $page = max($page,1);
15         $urls = $catdir = '';
16         $category = $this->categorys[$catid];
17         $setting = string2array($category['setting']);
18         $content_ishtml = $setting['content_ishtml'];
19         //当内容为转换或升级时
20         if($upgrade || (isset($_POST['upgrade']) && defined('IN_ADMIN') && $_POST['upgrade'])) {
21             if($_POST['upgrade']) $upgrade = $_POST['upgrade'];
22             $upgrade = '/'.ltrim($upgrade,WEB_PATH);
23             if($page==1) {
24                 $url_arr[0] = $url_arr[1] = $upgrade;
25             } else {
26                 $lasttext = strrchr($upgrade,'.');
27                 $len = -strlen($lasttext);
28                 $path = substr($upgrade,0,$len);
29                 $url_arr[0] = $url_arr[1] = $path.'_'.$page.$lasttext;
30             }
31         } else {
32             $show_ruleid = $setting['show_ruleid'];
33             $urlrules = $this->urlrules[$show_ruleid];
34             if(!$time) $time = SYS_TIME;
35             $urlrules_arr = explode('|',$urlrules);
36             if($page==1) {
37                 $urlrule = $urlrules_arr[0];
38             } else {
39                 $urlrule = isset($urlrules_arr[1]) ? $urlrules_arr[1] : $urlrules_arr[0];
40             }
41             $domain_dir = '';
42             if (strpos($category['url'], '://')!==false && strpos($category['url'], '?')===false) {
43                 if (preg_match('/^((http|https):\/\/)?([^\/]+)/i', $category['url'], $matches)) {
44                     $match_url = $matches[0];
45                     $url = $match_url.'/';
46                 }
47                 $db = pc_base::load_model('category_model');
48                 $r = $db->get_one(array('url'=>$url), '`catid`');
49                 
50                 if($r) $domain_dir = $this->get_categorydir($r['catid']).$this->categorys[$r['catid']]['catdir'].'/';
51             }
52             $categorydir = $this->get_categorydir($catid);
53             $catdir = $category['catdir'];
54             $year = date('Y',$time);
55             $month = date('m',$time);
56             $day = date('d',$time);
57             
58             $urls = str_replace(array('{$categorydir}','{$catdir}','{$year}','{$month}','{$day}','{$catid}','{$id}','{$page}'),array($categorydir,$catdir,$year,$month,$day,$catid,$id,$page),$urlrule);
59             $create_to_html_root = $category['create_to_html_root'];
60             
61             if($create_to_html_root || $category['sethtml']) {
62                 $html_root = '';
63             } else {
64                 $html_root = $this->html_root;
65             }
66             if($content_ishtml && $url) {
67                 if ($domain_dir && $category['isdomain']) {
68                     $url_arr[1] = $html_root.'/'.$domain_dir.$urls;
69                     $url_arr[0] = $url.$urls;
70                 } else {
71                     $url_arr[1] = $html_root.'/'.$urls;
72                     $url_arr[0] = WEB_PATH == '/' ? $match_url.$html_root.'/'.$urls : $match_url.rtrim(WEB_PATH,'/').$html_root.'/'.$urls;
73                 }
74             } elseif($content_ishtml) {
75                 $url_arr[0] = WEB_PATH == '/' ? $html_root.'/'.$urls : rtrim(WEB_PATH,'/').$html_root.'/'.$urls;
76                 $url_arr[1] = $html_root.'/'.$urls;
77             } else {
78                 //$url_arr[0] = $url_arr[1] = APP_PATH.$urls;
79                 $url_arr[0] = $url_arr[1] = '/'.$urls;//modify by DongGe 2016-06-07
80             }
81         }
82         //生成静态 ,在添加文章的时候,同时生成静态,不在批量更新URL处调用
83         if($content_ishtml && $data) {
84             $data['id'] = $id;
85             $url_arr['content_ishtml'] = 1;
86             $url_arr['data'] = $data;
87         }
88         return $url_arr;
89     }

 

posted @ 2016-06-17 11:31  _DongGe  阅读(796)  评论(0编辑  收藏  举报