为什么开启地址重写?typecho 给出了答案:

  • 地址重写即 rewrite 功能是某些服务器软件提供的优化内部连接的功能
  • 打开此功能可以让你的链接看上去完全是静态地址

下面我也来操作一下,实现 3 个功能:

    1. http 重定向到 https
    1. 不是 www 开头的地址重定向到 www 开头的地址
    1. 网站文章地址美化(看起来像合理的静态地址),也就是没有 /index.php/ 这个节点

一、服务器端配置(lamp环境)

1. 修改 /etc/apache2/apache2.conf ,开启重写

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride all      # 将 None 改为 all
        Require all granted
</Directory>

这个网站目录选择你的网站根目录那一段的配置,另外,这个配置有的人可能放在 /etc/apache2/sites-available/000-default.conf

2. 修改 /etc/apache2/sites-available/000-default.conf ,开启 http 到 https 重定向

# 在VirtualHost 节点内部的最后添加如下代码
RewriteEngine on
RewriteCond   %{HTTPS} !=on
RewriteRule   ^(.*)  https://%{SERVER_NAME}$1 [L,R]

3.在网站更目录添加 .htaccess 写入如下代码

RewriteEngine on
#下面两行是根域名到www 重定向
RewriteCond   %{HTTP_HOST} !^www\.
RewriteRule   ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]

#下面四行实现 typecho 地址重写功能
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

二、typecho 博客后台启用地址重写功能

url-rewite.png

三、修改之前不规范的文章地址

譬如我,之前写文章从不看下面的链接还可以给文章设一个自定义标题,都是自动生成的数字,结果一旦网站重做,同样的地址就会对应不同的文章。亡羊补牢,未为晚矣。

也不复杂,用 navicat 远程连接数据库,修改 contents 表下面对应文章的 slug 字段即可,如下图所示是我修改后的名字。

mod-content-slug.png

contents 表包含了文章,图片以及独立页面信息。