Discuz论坛redirect的301重定向问题解决

手册/FAQ (869) 2016-02-18 09:50:30

      在discuz论坛中可以看到类似redirect.php?tid=xxx&goto=lastpost#lastpost这样的链接,它的功能是实现“最新发表、最后发表、上一主题、下一主题“功能,仅这一个功能就可以给同一个内容页造成四份复制网页,因此将这样的链接301永久重定向到帖子的静态地址。

 

解决方法

修改 redirect.php 文件:

将前两个 require_once DISCUZ_ROOT.'./viewthread.php'; 语句替换为

$bmt_url='Location:/thread-'.$tid.'-'.$page.'-1.html';

header('HTTP/1.1 301 Moved Permanently');

header( $bmt_url );

将后两个 require_once DISCUZ_ROOT.'./viewthread.php'; 语句替换为

$bmt_url='Location:/thread-'.$tid.'-1-1.html';

header('HTTP/1.1 301 Moved Permanently');

header( $bmt_url );

 

dz5.5的引用处也有个跳转,也可以做301:

将 dheader("Location: viewthread.php?tid=$post[tid]&page=$page#pid$pid");替换为

$bmt_url='Location:/thread-'.$post[tid].'-'.$page.'-1.html#pid'.$pid;

header('HTTP/1.1 301 Moved Permanently');

header( $bmt_url );

 

***注意此处直接转到了静态地址,没有做判断是否开启伪静态功能,所以不开启会有问题

 

功能损失:转向到静态地址后,动态地址中类似#lastpost的锚点将无法起作用了,可能要手动滚屏了。

THE END