Typecho永久链接不支持带问号的格式如何解决

编辑

最近再使用WordpressToTypecho插件将wp转成了typecho后,想用Typecho永久链接的功能复刻下Wordpress那种带?参数的固定链接,如?p=123这样的格式,但测试发下改完后点文章还是分类啥的都还是在首页,也就是说这种带有?的链接格式直接就是不支持。那么对于Wordpress转投Typecho的用户来说,用这种格式转投Typecho就等于所有文章链接都换了,收录啥的直接受影响,那么有没有什么办法呢?

于是乎打开Github开始反馈,最终在sy-records大佬的帮助下找到了解决办法。

typecho/var/Typecho/Request.php文件337行左右找到如下代码:

 if ($pos = strpos($requestUri, '?')) { 
     $requestUri = substr($requestUri, 0, $pos); 
 } 

然后将其改为

        if (!strpos($requestUri, '?p=')&&!strpos($requestUri, '?cat=')&&!strpos($requestUri, '?page_id=')) {
        if ($pos = strpos($requestUri, '?')) {
            $requestUri = substr($requestUri, 0, $pos);
        }
        }

其实就是针对自己的这三种?p=?cat=?page_id=参数屏蔽了typecho那个过滤就行了,当然如果你得参数如果和typecho本身用到的参数重叠的话这样改可能有些问题(大多情况不会哈)。

下图是对应的永久链接设置
Typecho永久链接设置.jpeg

评论区

  1. helloworld helloworld
    helloworld

    帅哥,wordpress有个钩子wp_insert_post_data,通过这玩意可以在保存文章时修改文章的一些信息,例如文章别名,来达到自动生成自定义文章别名的效果。typecho文档里没翻到,你知道是哪个函数吗 感谢?