output->enable_profiler(TRUE); $this->load->model('Information_model'); $this->load->model('InfoMetas_model'); $this->load->library('Tags_analysis'); } public function index() { echo 'Information Index'; } //优先使用传入的URL,用于主动生成静态页面(去映射)(优先使用POST参数) public function detail($url = ''){ $data = array(); if (empty($url)) { $url = $this->input->get_post('static_html_url'); } if (empty($url) || $url == 'index.php') { $url = get_origin_url(); if (preg_match('/\?.*/', $url) == 1) { $url = preg_replace('/\?.*/', '', $url); //php_301($url); //return; } } //大小写转向,只要url有大写字母的全部转到小写字母的url上 if ($url != mb_strtolower($url)) { php_301(mb_strtolower($url)); return; } $data['detail'] = $this->Information_model->get_detail($url); if ($data['detail'] === false || empty($data['detail']->ic_content)) { send_404(); return false; } $data['canonical'] = ''; //新url转换到旧的url 278002649 if(strpos($data['detail']->is_path,'278002649') >= 0 || strpos($data['detail']->is_path,'278005102') >= 0){ $data['canonical'] = $data['detail']->ic_url; //制作canonical /*if($data['detail']->ic_type == 'country_info' || $data['detail']->ic_type == 'area_info'){ if(strpos($data['detail']->ic_url,'tours') > 0){ $info_url = explode('/',$data['detail']->ic_url); $data['canonical'] = '/'.$info_url['2'].'/'.$info_url['1'].'.htm'; }elseif(strpos($data['detail']->ic_url,'travel-guide') > 0){ $data['canonical'] = substr($data['detail']->ic_url,0,strpos($data['detail']->ic_url,'travel-guide')); }else{ $data['canonical'] = $data['detail']->ic_url.'.htm'; } }elseif($data['detail']->ic_type == 'pd_tour'){ $tour_url = explode('/',$data['detail']->ic_url); $product_code = explode('-',$tour_url['2']); $data['canonical'] = '/tours/ah-'.$product_code['2'].'.htm'; }*/ //构造结构化标签---面包屑 if($data['detail']->ic_show_bread_crumbs){ $breadcrumblist = array(); $path_arr = explode(',',substr($data['detail']->is_path,0,strlen($data['detail']->is_path)-1)); $path_arr = array_splice($path_arr,1); $path_arr = array_splice($path_arr,1); //循环获取每个节点的信息 if($data['detail']->ic_type == 'area_info'){ $info = $this->Information_model->get_parent_info($path_arr['0'])['0']; $breadcrumblist['0'] = new stdClass(); $breadcrumblist['1'] = new stdClass(); $breadcrumblist['2'] = new stdClass(); $breadcrumblist['0']->ic_url = $info->ic_url; $breadcrumblist['0']->ic_url_title = $info->ic_url_title; $breadcrumblist['1']->ic_url = '/'.strtolower($info->ic_url_title).'/travel-guide'; $breadcrumblist['1']->ic_url_title = $info->ic_url_title.' Travel Guide'; $breadcrumblist['2']->ic_url = $data['detail']->ic_url; $breadcrumblist['2']->ic_url_title = $data['detail']->ic_url_title; }else{ foreach($path_arr as $is_id){ $info = $this->Information_model->get_parent_info($is_id); if(!empty($info)){ $info = $info['0']; array_push($breadcrumblist,$info); } } } $data['detail']->construct_tag = make_construct_tag($breadcrumblist); $data['detail']->breadcrumblist = make_breadcrumblist($breadcrumblist); } }else{ $data['canonical'] = $data['detail']->ic_url; //将老的url指向新的url if(strpos($data['detail']->ic_url,'.htm') > 0){ $now_url = substr($data['detail']->ic_url,0,strlen($data['detail']->ic_url)-4); $now_info = $this->Information_model->get_detail($now_url); if($now_info !== false){ $data['canonical'] = $now_url; } } } //进行标签替换 $data['detail']->ic_content = $this->tags_analysis->analysis($data['detail']); $data['seo_title'] = $data['detail']->ic_seo_title; $data['seo_keywords'] = $data['detail']->ic_seo_keywords; $data['seo_description'] = $data['detail']->ic_seo_description; $data['seo_url'] = $data['detail']->ic_url; //print_r($data['detail']);die(); //判断是否有AMP版本,并生成缓存文件 if ($this->InfoMetas_model->get($data['detail']->ic_id, 'AMP_STATUS') > 0) { $AMP = $this->InfoMetas_model->get($data['detail']->ic_id, 'AMP'); if (!empty($AMP)) { if (mb_substr($data['seo_url'], -1, 1) == '/') { $data['amp_url'] = $data['seo_url'] . 'index.htm.amp.htm'; } else { $data['amp_url'] = $data['seo_url'] . '.amp.htm'; } $cache_path = 'd:/Dropbox/wwwcache/asiahighlights.com' . $data['amp_url']; $dir = dirname($cache_path); if (!is_dir($dir)) { @mkdir($dir, 0777, true); } //表单替换和价格替换 $AMP_Clone_content = $data['detail']->ic_content;//因为tags_analysis是根据信息结构来替换的,所以需要克隆一个信息结构,然后用AMP代码覆盖ic_content $data['detail']->ic_content = $AMP; $AMP = $this->tags_analysis->analysis($data['detail']); $data['detail']->ic_content = $AMP_Clone_content; file_put_contents($cache_path, $AMP); } } else { //尝试删除AMP文件 if (mb_substr($data['seo_url'], -1, 1) == '/') { $amp_url = $data['seo_url'] . 'index.htm.amp.htm'; } else { $amp_url = $data['seo_url'] . '.amp.htm'; } $amp_file = 'd:/Dropbox/wwwcache/asiahighlights.com' . $amp_url; if (file_exists($amp_file)) { unlink($amp_file); } } $data['meta_addon_css'] = $this->InfoMetas_model->get($data['detail']->ic_id, 'meta_addon_css'); $data['meta_addon_js'] = $this->InfoMetas_model->get($data['detail']->ic_id, 'meta_addon_js'); $data['meta_addon_picture'] = $this->InfoMetas_model->get($data['detail']->ic_id, 'meta_addon_picture'); //print_r($data);die(); $this->load->view('header', $data); $this->load->view('information_' . $data['detail']->ic_template); $this->load->view('footer'); if ($this->input->get_post('no_cache')) { //不触发缓存生成,否则影响AMP生成速度,这个主要是给自动转换AMP用的 } else { $this->output->cache(99999); } } //后面这串是密码,防止爬虫程序扫到 //删除缓存文件,比如页面不在发布,或者修改了URL等情况 public function delete_cache_8X913mksJ() { $url = $this->input->get_post('static_html_url'); if (empty($url)) { $this->output->set_status_header(404); return false; } $cache_path = 'd:/Dropbox/wwwcache/asiahighlights.com'; if (!is_dir($cache_path) OR !is_really_writable($cache_path)) { log_message('error', "Unable to write cache file: " . $cache_path); $this->output->set_status_header(404); return false; } $cache_path = $cache_path . $url; if (mb_substr($cache_path, -1, 1) == '/') { $cache_path .= 'index.htm'; } //如果文件存在,先判断是否为缓存文件,防止覆盖原始程序文件 if (file_exists($cache_path)) { if (!$fp_read = @fopen($cache_path, FOPEN_READ)) { $this->output->set_status_header(404); return FALSE; } flock($fp_read, LOCK_SH); $cache = ''; if (filesize($cache_path) > 0) { $cache = fread($fp_read, filesize($cache_path)); } flock($fp_read, LOCK_UN); fclose($fp_read); if (strpos($cache, '