DT6.0下搜索页解决canonical获取乱码问题

  最近研究dt6.0,官方内核默认是把搜索页屏蔽的,但是做seo的人都知道,搜索页聚合是争取排名的好地方,所以我就二次开发搜索页,具体可以查看前几期分享的,今天说说关于搜索的canonical的url乱码问题。

   首页第一步:找到api/extend.func.php下在最后面插入以下函数,本函数是自己写的,如有其他更精简写法可以一起交流。

  

if( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ){
   // IIS Mod-Rewrite
   $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL'];
} else if( isset( $_SERVER['HTTP_X_REWRITE_URL'] ) ) {
   // IIS Isapi_Rewrite
   $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL'];
} else {
   // Use ORIG_PATH_INFO if there is no PATH_INFO
   ( !isset( $_SERVER['PATH_INFO']) && isset( $_SERVER['ORIG_PATH_INFO'] ) ) && ( $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'] );
   // Some IIS + PHP configurations puts the script-name in the path-info ( No need to append it twice )
   if ( isset( $_SERVER['PATH_INFO'] ) ) {
       ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] ) ? ( $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'] ) : ( $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'] );
   }
   // Append the query string if it exists and isn't null
   ( isset($_SERVER['QUERY_STRING'] ) && !empty( $_SERVER['QUERY_STRING'] ) ) && ( $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING'] );
}

    然后在搜索模板下添加:

   

<link rel="canonical" href="<?php  echo 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];?>" />

   这样就好了,具体演示:

http://zhimo.yuanzhumuban.cc/news/search-htm-kw-%E8%AF%86%E5%88%AB.html

原文地址:https://www.cnblogs.com/68xi/p/9196569.html