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 }