Typecho+Apache2设置伪静态

in 工具与教程 with Views: 810

本文介绍如何开启Typecho伪静态(即URL Rewrite特性)。

配置类教程真的过时很快……找最新配置教程吧小伙伴们,这也是我这次的血泪教训。

先把各种参数放在最开头

时间:2020/10
Ubuntu18.04 + Typecho1.1 + Apache2

配置步骤

😥直接在Typecho后台选择“启用地址重写功能”是不行的:

这点很多站长都遇到了,页面404。

😢搜索出错原因时,大部分教程(甚至2019.08更新的、搜索排名很靠前的一篇)都说再在网站根目录加一个.htaccess文件并写入Apache/Nginx对应的重定向代码就可以了——但是,还是不行……我卡在这里两三天没动弹。

😀成功的完整配置过程如下:
1. 在Typecho后台选择“启用地址重写功能”,遇到报警提示直接打勾、确认。

2. 在apache2的站点配置(/etc/apache2/apache2.conf)中添加一段代码:

<Directory /var/www/>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php/$1 [L]
</Directory>

备注1:这段代码只适用 <Apache2>
备注2:这段代码只适用 <Typecho安装在云服务器一级目录> 的情况下

3. 我不确定Apache2有没有默认启用rewrite模块(实践发现其实已经开启),所以干脆手动启动了一下,然后再重启apache服务:

sudo a2enmod rewrite
service apache2 restart

完成✨

了解原理

1.关于伪静态

在现代爬虫足够智能的今天,伪静态在SEO里究竟占多重分量不好说。不过,为了网站域名美观考虑,将网站所有URL伪静态化也是有必要的。理解两点:

伪静态输入,即服务器将浏览器的静态地址转换成动态参数的过程,譬如:
https://m1llie.tech/nice/3.html转换成https://m1llie.tech/index.php?c=nice&id=3

伪静态输出,即PHP代码将伪静态地址输出给浏览器识别,譬如echo site_url("nice","3")转换成https://m1llie.tech/nice/3.html
(对于第二点的理解,不明白的话可以参考这里

所以,配置伪静态的时候有两个地方需要配置,一个是Apache2 输入伪静态(即本文中对Apache配置文件的修改),一个是PHP 输出伪静态(即本文中进入Typecho后台进行的设定)。

2.没有使用.htaccess来配置

实际上,也可以在网站根目录下新建.htaccess文件并写入重定向规则,然后在apache2.conf中把<Directory /var/www/>下修改为AllowOverride ALL。伪静态的目的可以达到,但是AllowOverride允许站点目录下的其他配置覆盖Apache2这里的配置,可能会被用于提权,有安全风险。


参考:
[1] Typecho中文网 - 建站基础系列 05.常用配置之Apache伪静态

Responses / Cancel Reply
  1. 老实人

    老哥有没有Nginx的设置方法

    Reply
    1. @老实人

      试试这个:常用配置之Nginx伪静态https://www.typechodev.com/servers/remove_index_for_nginx.html

      Reply