日志|typecho博客全站开启https


技术卡片68 阅0 评

Nginx服务器,宝塔面板
宝塔开启强制https,很容易。

另外设置伪静态

以下两种伪静态设置方法,第一个是官方给的try_files伪静态方法推荐使用

location / {
       try_files $uri $uri/ /index.php$is_args$args;
 }
----------------------------------------------------------------------
if (!-e $request_filename) {
       rewrite ^(.*)$ /index.php$1 last;
}

Apache服务器,宝塔面板

后来发现有个简单方法,不进行以下设置,宝塔直接开启强制https,然后按下面的方法修改typecho的config.inc.php文件。这就可以了,如果使用强制https请不要修改服务器配置,剩下的就是按照网上填 .htaccess 伪静态规则了。

一、我的经验

开启 https 前提是申请和安装 SSL 证书(百度答案多)

或者修改 .htaccess 文件

#这里是301跳转配置,我设置的是从域名.cn 跳转到 www.域名.cn
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^tdrme.cn [NC]
RewriteRule ^(.*)$ https://www.tdrme.cn/$1 [L,R=301]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.tdrme.cn/$1 [L,R=301]
 
#这里是typecho伪静态配置   
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

2.编辑 Typecho 站点根目录下的文件。

config.inc.php 

在文件最后加入以下内容

/** 开启HTTPS **/ define('__TYPECHO_SECURE__',true);

这两步完成算是基本完成开启 https 了,但是为了全局 https 还是要下面的内容

3.为了全局 https 还要修改评论系统,typecho 的评论提交默认 http

找到typecho的usr > themes > (自己用的主题文件夹)> comments.php

查找到 
$this->commentUrl(),
将其替换为:
echo str_replace("http","https",$this->commentUrl());

这样配置过后,网站就基本实现 https 浏览器也有了小绿锁

4.登录 Typecho 后台 -> 设置 -> 基本设置 -> 站点地址改成 https 的域名

虚拟服务器不能直接修改服务器配置文件,可以通过在 web 根目录创建.htaccess文件配置

 #HTTP_TO_HTTPS_START
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{SERVER_PORT} !^443$
        RewriteRule (.*) https://tdrme.cn$1 [L,R=301]
    </IfModule>
    #HTTP_TO_HTTPS_END
tdrme.cn部分是你的域名

二、其他人的教程

感谢陌生老哥,我也是借鉴了他的教程 https://www.qmang.online/blog
作者:轻芒_e
链接:https://www.jianshu.com/p/f2302b938ef4
來源:简书
登录 Typecho 后台 -> 设置 -> 基本设置 -> 站点地址改成 https 的域名

1.编辑 Typecho 站点根目录下的文件。

config.inc.php 

加入下面一行配置,否则网站后台还是会调用 HTTP 资源。
登录后台的时候会出现奇怪的错误

/** 开启HTTPS */ define('__TYPECHO_SECURE__',true); 

2.由于 Chrome 浏览器对 HTTPS 要求较高,Firefox 已经显示小绿锁,可是 Chrome 还是有警告提示,F12 查看,评论表单的 action 地址还是 HTTP,找到站点主题目录下的 comments.php 文件,并搜索 $this->commentUrl()

$this->commentUrl() /* 并将其替换为:*/ /* 注意:域名最后不要添加“/”这个字符 */ echo str_replace("http","https",$this->commentUrl()); 

3.更新文章中引用的附件地址为 HTTPS 地址,执行 SQL 数据库操作:

UPDATE `typecho_contents` SET `text` = replace (`text`, 'http://qiudy.cc', 'https://qiudy.cc') /* 链接替换为自己的网站 */ /* 这是我的 */ UPDATE `typecho_contents` SET `text` = replace (`text`, 'http://www.qmang.online/blog', 'https://www.qmang.online/blog') 

4.但是这样 HTTP 的方式还是可以访问的,我们可以通过 WEB 服务器(Ningx)将 80 端口(HTTPS)重定向到 443 端口(HTTPS),强制全站 HTTPS。如果你使用的了 CDN 的话 在 CDN 加速模式跳转,设置 http 跳转 https。

5.后来发现 typecho 头像是从 gravatar 获取的,但是 typecho 获取头像的地址为 http。所以修改 var/Typecho/Common.php 中的第 937 行。

http://www.gravatar.com /* 修改为 */ https://www.gravatar.com 

这就可以了
[/collapse]

以上就是教程了,用来解决以后的问题,在此备忘

最后更新 2021-11-24
评论 ( 0 )
OωO
隐私评论