Typecho博客部署与微信访问问题解决全记录

一、域名配置与微信浏览器访问问题

1.1 问题描述

在微信中点击自己的博客域名链接时,出现“已停止访问该网页”的红色拦截提示,域名被微信封禁。

1.2 原因分析

对于个人博客,微信红色拦截的常见原因包括:

  • 域名历史问题:域名曾被他人用于违规内容,被微信列入黑名单
  • 网站缺少安全资质:未完成ICP备案,或未配置有效的SSL证书(HTTPS)
  • 服务器IP被连坐:同服务器其他站点违规导致IP被微信屏蔽

1.3 解决方案

第一步:完善网站合规资质

  • 完成域名ICP备案
  • 为域名配置有效的SSL证书,强制启用HTTPS
  • 检查网站内容,确保无诱导分享、虚假广告、恶意跳转等违规内容

第二步:通过官方渠道申诉

  • 访问腾讯安全网址安全中心:https://urlsec.qq.com/complain.html
  • 准备申诉材料:域名所有权证明、ICP备案信息截图、网站内容及整改说明
  • 提交申诉申请

第三步:配置微信验证文件
按照微信申诉流程要求,在网站根目录放置指定的验证文件(如 2d695757040021118c75b00ae3fa95b7.txt),确保可通过 https://域名/验证文件名.txt 正常访问。


二、Typecho备案号添加方法

2.1 修改 functions.php 文件

文件位置:/usr/themes/主题名称/functions.php

themeConfig($form) 函数中添加备案号配置项:

<?php
if (!defined('__TYPECHO_ROOT_DIR__')) exit;

function themeConfig($form)
{
    // 原有配置项...
    $logoUrl = new \Typecho\Widget\Helper\Form\Element\Text(
        'logoUrl',
        null,
        null,
        _t('站点 LOGO 地址'),
        _t('在这里填入一个图片 URL 地址, 以在网站标题前加上一个 LOGO')
    );
    $form->addInput($logoUrl->addRule('url', _t('请填写一个合法的URL地址')));

    // 新增:备案号配置项
    $icp = new \Typecho\Widget\Helper\Form\Element\Text(
        'icp',
        null,
        null,
        _t('网站备案号'),
        _t('请输入你的备案号,例如:京ICP备12345678号-1')
    );
    $form->addInput($icp);

    // 原有侧边栏配置...
    $sidebarBlock = new \Typecho\Widget\Helper\Form\Element\Checkbox(
        'sidebarBlock',
        [
            'ShowRecentPosts'    => _t('显示最新文章'),
            'ShowRecentComments' => _t('显示最近回复'),
            'ShowCategory'       => _t('显示分类'),
            'ShowArchive'        => _t('显示归档'),
            'ShowOther'          => _t('显示其它杂项')
        ],
        ['ShowRecentPosts', 'ShowRecentComments', 'ShowCategory', 'ShowArchive', 'ShowOther'],
        _t('侧边栏显示')
    );
    $form->addInput($sidebarBlock->multiMode());
}

// 其他函数保持不变...
function postMeta(/* 参数 */) { /* ... */ }
?>

2.2 修改 footer.php 文件

文件位置:/usr/themes/主题名称/footer.php

在页脚版权信息后添加备案号显示代码:

<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit; ?>

        </div><!-- end .row -->
    </div>
</div><!-- end #body -->

<footer id="footer" role="contentinfo">
    &copy; <?php echo date('Y'); ?> <a href="<?php $this->options->siteUrl(); ?>"><?php $this->options->title(); ?></a>.
    <?php _e('由 <a href="https://typecho.org">Typecho</a> 强力驱动'); ?>.
    
    <!-- 新增:备案号显示 -->
    <?php if ($this->options->icp): ?>
        <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow" style="margin-left:10px;">
            <?php $this->options->icp(); ?>
        </a>
    <?php endif; ?>
    
</footer><!-- end #footer -->

<?php $this->footer(); ?>
</body>
</html>

带分隔符的样式版本:

<?php if ($this->options->icp): ?>
    <span style="margin:0 5px;">|</span>
    <a href="https://beian.miit.gov.cn/" target="_blank" rel="nofollow">
        <?php $this->options->icp(); ?>
    </a>
<?php endif; ?>

2.3 后台填写备案号

  1. 登录Typecho后台
  2. 进入:控制台 → 外观 → 设置外观
  3. 在页面最下方找到“网站备案号”输入框
  4. 填写备案号(格式如:京ICP备12345678号-1)
  5. 保存设置

三、Caddy配置微信验证文件

3.1 错误配置示例

以下配置存在语法错误,handle 指令不能独立于站点块之外:

www.zhaopeng.site {
    root * /var/www/html
    php_fastcgi typecho:9000 {
        try_files {path} {path}/index.php /index.php?{query}
        env PATH_INFO {http.path_info}
    }
    file_server
    encode gzip zstd
    header {
        X-Content-Type-Options nosniff
        X-Frame-Options SAMEORIGIN
        Referrer-Policy strict-origin-when-cross-origin
    }
}
# 错误:handle不能放在站点块外部
handle /2d695757040021118c75b00ae3fa95b7.txt {
    root * /srv/docs
    file_server
}

3.2 正确配置

www.zhaopeng.site {
    root * /var/www/html
    php_fastcgi typecho:9000 {
        try_files {path} {path}/index.php /index.php?{query}
        env PATH_INFO {http.path_info}
    }
    file_server
    encode gzip zstd
    header {
        X-Content-Type-Options nosniff
        X-Frame-Options SAMEORIGIN
        Referrer-Policy strict-origin-when-cross-origin
    }
    
    # 微信验证文件处理(必须放在站点块内部)
    handle /2d695757040021118c75b00ae3fa95b7.txt {
        root * /srv/docs
        file_server
    }
}

3.3 简化方案

将验证文件直接放在网站根目录,无需额外配置:

cp /srv/docs/2d695757040021118c75b00ae3fa95b7.txt /var/www/html/

简化后的Caddy配置:

www.zhaopeng.site {
    root * /var/www/html
    php_fastcgi typecho:9000 {
        try_files {path} {path}/index.php /index.php?{query}
        env PATH_INFO {http.path_info}
    }
    file_server
    encode gzip zstd
    header {
        X-Content-Type-Options nosniff
        X-Frame-Options SAMEORIGIN
        Referrer-Policy strict-origin-when-cross-origin
    }
}

3.4 部署与验证

重载Caddy配置:

# Docker容器方式
docker exec -it caddy容器名 caddy reload --config /etc/caddy/Caddyfile

# systemd管理方式
systemctl reload caddy

验证文件是否可访问:

curl -I https://www.zhaopeng.site/2d695757040021118c75b00ae3fa95b7.txt

预期返回 200 OK 状态码。

浏览器访问测试:
直接在浏览器中打开 https://www.zhaopeng.site/2d695757040021118c75b00ae3fa95b7.txt,确认能正常显示文件内容。


四、容器部署注意事项

4.1 文件修改方式

Typecho主题文件位于容器内部,修改方式如下:

方式一:目录映射(推荐)
在docker run或docker-compose中映射主题目录到宿主机:

volumes:
  - /宿主机路径/theme:/var/www/html/usr/themes/主题名

方式二:进入容器修改

# 进入容器
docker exec -it 容器名 /bin/bash

# 使用vim或nano编辑文件
vim /var/www/html/usr/themes/主题名/functions.php
vim /var/www/html/usr/themes/主题名/footer.php

4.2 Caddy容器重载配置

docker exec -it caddy容器名 caddy reload --config /etc/caddy/Caddyfile

五、微信申诉检查清单

提交微信恢复访问申诉前,确认以下事项:

  • 域名已完成ICP备案,备案号已正确显示在网站页脚
  • 网站已启用HTTPS,SSL证书有效且未过期
  • 网站内容无违规信息(无敏感词、诱导分享、违法内容等)
  • 微信验证文件路径正确,可通过 https://域名/验证文件名.txt 正常访问
  • 验证文件内容与微信要求完全一致(包括文件名大小写和扩展名)

标签: none

添加新评论