admin 发表于 2020-7-8 10:19:19

SEO超级伪静态 目录化伪静态后,有时点击跳转到错误链接的解决办法

部分插件跳转时,没带上网站域名,然后浏览器就默认以当前url路径为前缀进行跳转,导致链接错误
打开:source\function\function_core.php
找到
function dheader($string, $replace = true, $http_response_code = 0) {      $islocation = substr(strtolower(trim($string)), 0, 8) == 'location';      if(defined('IN_MOBILE') && strpos($string, 'mobile') === false && $islocation) {                if (strpos($string, '?') === false) {                        $string = $string.'?mobile='.IN_MOBILE;                } else {                        if(strpos($string, '#') === false) {                              $string = $string.'&mobile='.IN_MOBILE;                        } else {                              $str_arr = explode('#', $string);                              $str_arr = $str_arr.'&mobile='.IN_MOBILE;                              $string = implode('#', $str_arr);                        }                }      }      $string = str_replace(array("\r", "\n"), array('', ''), $string);      if(empty($http_response_code) || PHP_VERSION < '4.3' ) {                @header($string, $replace);      } else {                @header($string, $replace, $http_response_code);      }      if($islocation) {                exit();      }}修改为function dheader($string, $replace = true, $http_response_code = 0) {      global $_G;      $islocation = substr(strtolower(trim($string)), 0, 8) == 'location';      if($islocation){                if(!preg_match('/location:\s*https?:\/\//is', $string)){                        $string = preg_replace("/location:\s*/is", 'Location: '.$_G['siteurl'], $string);                }      }      if(defined('IN_MOBILE') && strpos($string, 'mobile') === false && $islocation) {                if (strpos($string, '?') === false) {                        $string = $string.'?mobile='.IN_MOBILE;                } else {                        if(strpos($string, '#') === false) {                              $string = $string.'&mobile='.IN_MOBILE;                        } else {                              $str_arr = explode('#', $string);                              $str_arr = $str_arr.'&mobile='.IN_MOBILE;                              $string = implode('#', $str_arr);                        }                }      }      $string = str_replace(array("\r", "\n"), array('', ''), $string);      if(empty($http_response_code) || PHP_VERSION < '4.3' ) {                @header($string, $replace);      } else {                @header($string, $replace, $http_response_code);      }      if($islocation) {                exit();      }}

TyCoding 发表于 2020-7-8 10:19:37

如果你的插件没问题,只是帖子偶尔打开连接错误,可以考虑下边的方法

打开 source\module\forum\forum_viewthread.php
找到
dheader("Location:forum.php?mod=viewthread&tid=$_G");
改成
dheader("Location:$_Gforum.php?mod=viewthread&tid=$_G");


这是discuz自身对“主题有楼层不准确时”的一个操作,跳转是为了处理后刷新页面,但跳转时没带上域名,导致跳转错误
页: [1]
查看完整版本: SEO超级伪静态 目录化伪静态后,有时点击跳转到错误链接的解决办法

创宇盾启航版免费网站防御网站加速服务