伪静态强制HTTPS解决方案

相关文章:

Typecho开启伪静态——叶戈博客

  

  大概是两个月前之前,偶然间看到了景安云面板上的一键申请免费SSL,于是就申请了一个,不到三分钟就自己配置到位了,我的博客从那时起就脱离了http访问。

1

  当时还在使用的是经Flyingsky大佬魔改后的,源自OFFODDTypecho主题Initial-Fly,而为了追求访(装)问(逼)体(快)验(感),我在后台设置里把默认网址加上了s,还开启了Ajax翻页,然后就屁颠屁颠地跑去通知友链更新了。


  但是我很快发现事情没有那么简单。首先是在登入后台时发现了异常之处。使用过Typecho的同志们应该会发现,在Typecho的后台,一个账号只能在一台设备上登录。举个栗子比如说我经常用Via浏览器登录admin这个账号,但是如果同一台手机上使用夸克浏览器登录admin后,Via浏览器上的后台再使用时就需要重新登录。有一次我从友链的页面回来 (对方还没有更新我的链接,为http访问) 再去登录后台时,居然又让我重新登录。登录到后台之后在http后加上s,结果又得重新登。


  没有太在意,接着就是邻居发现了异常。一位友人指出,在使用http访问时,向下拉动本该Ajax自动更新文章,但是通知小插件 (大佬魔改加上的) 显示出错,不能拉取文章。这就是很大的猫病了,要改要改!

2

  开始动手,搜到一些结果。

跳转和伪静态是两码事
ps:另外请明确跳转的两端,然后设置vhost
伪静态才是rewrite干的事

代码

<?php if ($_SERVER["HTTPS"] <> "on")
    {
    $xredir="https://".$_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 
    header("Location: ".$xredir);
    }
?>

配合伪静态去掉index

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

没看懂,继续搜。

http可以用301跳转到https,至于index.php用伪静态解决,在domain.conf的server段里增加

代码

  

if ($ssl_protocol = "") {
    return 301 https://$server_name$request_uri; 
} 
if ($host != '你的域名' ) {
    return 301 https://你的域名$request_uri; 
} 

配合伪静态

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L] 
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

  
  

暂时没有找到较为简单的解决方案,先扔那里不管了。


  几星期前换了这个好看的主题Story,对于Ajax没有了需求,没有太大的猫饼了。今天偶然再想起来,再去搜索,第一条变成了枫叶博客的解决方案,也正是我现在所使用的,比较完美的方案。


Apache

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>

  

Nginx

location / {
index index.html index.php;
if (-f $request_filename/index.html) {
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php) {
rewrite (.*) $1/index.php;
}
if (!-f $request_filename) {
rewrite (.*) /index.php;
}
}

  

SEA

name: taoblogs
version: 1
#cron:
# - description: cron test
# url: index.php
# schedule: every 43 mins
# timezone: Beijing
handle:
- rewrite: if(!is_dir() && !is_file()) goto "index.php?%{QUERY_STRING}"

  

IIS 下的 httpd.ini

不完美

[ISAPI_Rewrite]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# 中文tag解决
RewriteRule /tag/(.*) /index\.php\?tag=$1
# sitemapxml
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# 内容页
RewriteRule /(.*).html /index.php/$1.html [L]
# 评论
RewriteRule /(.*)/comment /index.php/$1/comment [L]
# 分类页
RewriteRule /category/(.*) /index.php/category/$1 [L]
# 分页
RewriteRule /page/(.*) /index.php/page/$1 [L]
# 搜索页
RewriteRule /search/(.*) /index.php/search/$1 [L]
# feed
RewriteRule /feed/(.*) /index.php/feed/$1 [L]
# 日期归档
RewriteRule /2(.*) /index.php/2$1 [L]
# 上传图片等
RewriteRule /action(.*) /index.php/action$1 [L]

注:记得到后台永久链接设置里,启用地址重写功能。

解决!

tag(s): none
back · home
Edit with markdown

已有 9 条评论

  1. 林海草原

    我之前也是上网找这样的代码,但是总有问题。后来换成cpanel的虚机,它会给我生成很多这样的代码,都是标准的,也是有效的。后面我帮别人配置的时候,都用这些代码。如果你需要,可以跟我说,我把代码发给你。

    林海草原 September 12th, 2019 at 07:12 am回复
    1. 叶戈

      那小生就蟹蟹您了(^▽^)

      叶戈 September 12th, 2019 at 03:22 pm回复
  2. Kiwiape

    啥时候换主题啦

    Kiwiape September 7th, 2019 at 07:57 pm回复
    1. 叶戈

      至少这个字体我很是喜欢ヾ(≧▽≦*)o

      叶戈 September 7th, 2019 at 10:49 pm回复
    2. 叶戈

      正好一个月了吧,原来的initial感觉不太有美感,有一些拼凑而成的不成熟。后来发现这个story主题虽然功能比起以前那个要少,但是和我想象中的极简风格主题有很高的相似度,比较像以前仙岛驿站的Fantasy清梦主题。换上之后又发现一些小的不足,自己改了改。感觉可能还是大道极简的思想占据了优势。

      叶戈 September 7th, 2019 at 10:47 pm回复
  3. repostone

    非技术的路过。

    repostone September 6th, 2019 at 04:24 pm回复
    1. 叶戈

      伪技术教程而已(手动滑稽

      叶戈 September 7th, 2019 at 10:51 pm回复
  4. 冰川大魔王

    果断caddy解决啊

    冰川大魔王 September 1st, 2019 at 04:35 pm回复
    1. 叶戈

      caddy大法确实好,但是我这是虚机( •̥́ ˍ •̀ू )

      叶戈 September 2nd, 2019 at 12:47 pm回复