Home >Backend Development >PHP Tutorial >强制使用 HTTPS 对 Typecho 目录无效

强制使用 HTTPS 对 Typecho 目录无效

WBOY
WBOYOriginal
2016-06-06 20:27:071964browse

我给我的个人站点加了 SSL 证书,而且设置了 HTTP 全部跳转到 HTTPS,可为什么直接 HTTP 访问 Typecho 所在目录(/blog/)不会跳转?包括文章页、后台页面也是。
而且直接 HTTP 访问博客首页,文章链接也是 http:// 而不是 https://,我在后台已经设置了站点地址是走 https 的。

另外,主机商说主机使用的不是 443 端口,只能用 RewriteCond %{HTTP:KERSSL} !on 来判断是否走了 HTTPS,我的 .htaccess 文件如下:

<code>RewriteCond %{HTTP:KERSSL} !on [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]</code>

直接用 HTTP 访问其他目录是能够跳转到 HTTPS 的。

回复内容:

我给我的个人站点加了 SSL 证书,而且设置了 HTTP 全部跳转到 HTTPS,可为什么直接 HTTP 访问 Typecho 所在目录(/blog/)不会跳转?包括文章页、后台页面也是。
而且直接 HTTP 访问博客首页,文章链接也是 http:// 而不是 https://,我在后台已经设置了站点地址是走 https 的。

另外,主机商说主机使用的不是 443 端口,只能用 RewriteCond %{HTTP:KERSSL} !on 来判断是否走了 HTTPS,我的 .htaccess 文件如下:

<code>RewriteCond %{HTTP:KERSSL} !on [NC]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]</code>

直接用 HTTP 访问其他目录是能够跳转到 HTTPS 的。

在config.inc.php里增加

<code class="php">define('__TYPECHO_SECURE__', true);</code>

最后找出了原因,是因为 /blog/ 下还有一个 .htaccess,我一开始不知道这个文件,所以忘在这里加上跳转了,因此在访问/blog/的时候 Apache 读取的是该目录下的 .htaccess(也就是不会从 HTTP 跳转到 HTTPS 的那个)。

除此之外,@joyqi 回答的解决方案是用来让链接输出为https

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:phpredis 扩展安装Next article:关于命名空间