本文介绍如何开启Typecho伪静态(即URL Rewrite特性)。
配置类教程真的过时很快……找最新配置教程吧小伙伴们,这也是我这次的血泪教训。
1 先把各种参数放在最开头
时间:2020/10
Ubuntu18.04 + Typecho1.1 + Apache2
2 配置步骤
😥直接在Typecho后台选择“启用地址重写功能”是不行的:
这点很多站长都遇到了,页面404。
😢搜索出错原因时,大部分教程(甚至2019.08更新的、搜索排名很靠前的一篇)都说再在网站根目录加一个.htaccess文件,并写入Apache/Nginx 对应的重定向代码就可以了 —— 但是,还是不行……我卡在这里两三天没动弹。
😀成功的完整配置过程如下:
2.1 在Typecho后台选择“启用地址重写功能”,遇到报警提示直接打勾、确认。
2.2 在Apache2的站点配置(/etc/apache2/apache2.conf)中添加一段代码:
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.php/$1 [L]
备注1:这段代码只适用 Apache2
备注2:这段代码只适用 Typecho安装在云服务器一级目录的情况下
2.3 我不确定Apache2有没有默认启用rewrite模块(实践发现其实已经开启),所以干脆手动启动了一下,然后再重启Apache服务:
sudo a2enmod rewrite service apache2 restart
完成✨
3 了解原理
3.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后台进行的设定)。
3.2 没有使用.htaccess来配置
实际上,也可以在网站根目录下新建.htaccess 文件并写入重定向规则,然后在apache2.conf 中把下修改为AllowOverride ALL。伪静态的目的可以达到,但是AllowOverride 允许站点目录下的其他配置覆盖Apache2这里的配置,可能会被用于提权,有安全风险。
参考:
[1] Typecho中文网 - 建站基础系列 05.常用配置之Apache伪静态
https://www.typechodev.com/servers/remove_index_for_apache.html
这里貌似不能评论,点击“阅读原文”进入m1llie的网页版博客哟