menu Dogge's blog
more_vert
chevron_right 首页 » Technique » 正文
伪静态 + HTTPS的解决方案
2019-08-31 | Technique | 9 条评论 | 52 次阅读 | 1029字

伪静态是干嘛用的?好吃吗(⊙﹏⊙)
这篇文章来引导对于伪静态的初步(伪)认知

伪静态到底是干什么用的

Typecho博客初始安装完成后,博客的任何内页面,地址栏都会有index.php (例如https://www.example.com/index.php/archives/about.html),非常影响美观和网站结构,本文将详解在几种环境下如何设置伪静态来去掉index.php

入门

  1. 进入后台
  2. 设置
  3. 永久链接
  4. 启用地址重写功能
  5. 勾选仍然启动此功能
  6. 选择wordpress风格
  7. 保存设置

1

关于风格选择,你可以自行改成你喜欢的。

Apache配置教程

在网站根目录创建或编辑.htaccess文件
添加以下代码
保存配置,完成

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

2


Nginx配置教程

Nginx配置有两种方案均可实现,以下分别介绍:

方案一

编辑站点nginx.conf文件
在80端口的http和443端口的https段落中分别添加301重定向代码

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

3

4

保存后上传覆盖你原有的conf文件
输入nginx -t检查错误
重启Nginx后生效


方案二

利用Nginx的include来调用伪静态配置文件
找到Nginx的主conf文件夹,本文以/usr/local/nginx/conf/为例.

在conf下新建文件夹,本文以rewrite为例.
在rewrite文件夹下新建typecho.conf
添加以下代码
保存

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

编辑站点nginx.conf文件
在80端口的http和443端口的https段落中分别添加以下代码

include rewrite/typecho.conf;

5
6
保存后上传覆盖你原有的conf文件
输入nginx -t检查错误
重启Nginx后生效


宝塔面板

宝塔面板分为LNMP和LAMP两种环境

LNMP

  1. 登录宝塔面板
  2. 网站
  3. 设置
  4. 伪静态
  5. 选择typecho
  6. 保存配置完成
选择typecho时,还会有typecho2的选择.如果使用域名直接安装博客,例如https://www.example.com 为博客首页,那么请选择typecho.如果域名已经有其他主页,希望在二级子目录来安装博客,例如https:/www.example.com/typecho 为博客首页,那么请选择typecho2.

7


LAMP

  1. 登录宝塔面板
  2. 网站
  3. 设置
  4. 伪静态
  5. 保持默认0.当前
  6. 添加以下代码
  7. 保存配置完成
由于LAMP环境没有预设typecho的伪静态代码,这里需要手动添加.
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

8

上文详解了如何在各环境下设置Typecho伪静态去掉index.php


进阶


概述

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

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


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


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

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


操作

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

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]

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

None
发表评论
已有 9 条评论
textsms
account_circle
email
link
    林海草原
    September 12th, 2019 at 07:12 am

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

      叶戈
      叶戈 博主
      September 12th, 2019 at 03:22 pm

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

    Kiwiape
    September 7th, 2019 at 07:57 pm

    啥时候换主题啦

      叶戈
      叶戈 博主
      September 7th, 2019 at 10:49 pm

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

      叶戈
      叶戈 博主
      September 7th, 2019 at 10:47 pm

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

    repostone
    September 6th, 2019 at 04:24 pm

    非技术的路过。

      叶戈
      叶戈 博主
      September 7th, 2019 at 10:51 pm

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

    冰川大魔王
    September 1st, 2019 at 04:35 pm

    果断caddy解决啊

      叶戈
      叶戈 博主
      September 2nd, 2019 at 12:47 pm

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