[YQDOC]解决302无限跳转问题 语雀打不开不显示

本文记录了在YQDOC开源文档站遇到的无限302跳转问题,详细分析了故障原因,并提供了修改Post.php文件的具体解决方案,同时分享了解决过程中遇到的其他小问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

近期楼主在朋友推荐下知道了YQDOC这个神奇的开源文档站.欣喜之余,用起来着实有几分刺挠。这个开源的文档站潜力不小,目前得知作者已经停止维护了,所以没有写BUG能力的朋友建议还是绕行选择其他平台…

问题现象:

这个问题是我在语雀平台上编辑完毕文档目录以后,回到自己的文档站上发现的.
故障表现为点击首页内的知识库连接,随后302无限跳转问题.
该问题是由于目录当中新建了一个分组导致的,
经过强迫症的纠结,我终于找到了这个问题的具体原因及解决办法

故障原因:

我在语雀上编辑目录时,新建了一个分类并将文档拖拽到该目录当中.
这波操作改变了目录的顺序,所以数据结构也跟着变了起来.
经过了一顿神操作,终于定位到了问题所在位置,来看源代码是酱样事儿写的:

//XSS过滤
		$name = $this->security->xss_clean($name);
		$slug = $this->security->xss_clean($slug);
		if( ($slug == '') OR ( ! isset($slug)) ) {
			$toc_tmp = $this->get_data->toc($name);
			$slug = $toc_tmp[0]->slug;
			$url = current_url();
			$url = $url.'/'.$slug;
			header("location: {$url}");
		}

这个文件位于:{Yqdoc}\application\controllers\Post.php
可以看到这里就只是简单粗暴的用了个0来引用第一个资源,然而这个时候获取到的$slug值为#,也就是分组的值.正是这个#导致了页面无限302跳转的问题.
(可能当时作者开发的时候,语雀平台还没有这么多目录分类吧,所以作者没写???..)

解决方案:

我将原来简单粗暴的部分用foreach遍历了一下,找到第一个$slug值不为#的跳出.然后在外部又加了一个判断最终是否获取到了正确的slug值.这里简单的放下代码,

//注释掉之前的代码
//$slug = $toc_tmp[0]->slug;
foreach ($toc_tmp as $toc_val){
    $slug = $toc_val->slug;
    if($slug === "#"){
    	//die ("<div>RunTrace:".__FILE__." Line:".__LINE__."</div><div>Error:slug===#</div>");
    	continue;
    }else{
    	break;
    }
 }
 if($slug === "#"){
   	die ("<div>RunTrace:".__FILE__." Line:".__LINE__."</div><div>错误:该知识库下没有文档无法显示!</div>");
   	

 }

然而…
事情并没有那么简单

虽然目前页面无限302的问题解决了,但是衍生的各种小问题也是醉了…

默认页面中左侧目录的选中状态
经过这样处理过的页面,左侧文档目录是不会显示点击后的绿色状态的
在这里插入图片描述
虽然看到代码下方已经写了header重定向但是地址栏的地址还是没跟着变,这里实测将下面的中括号去掉就好了在这里插入图片描述

同样的我又测试了连接的目录类型,不出意外的,它果然又失控了…
行吧行吧行吧!!!下次用到的时候再搞吧!!如果有搞定的童鞋记得跟我说一下!
也可能哪天有空了再搞,搞好了补发.

欢迎入坑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值