apache2开启地址重写功能

typecho缺省网页地址是/index.php/archives/{slug}.html的形式,在设置-永久链接设置里,启用地址重写功能,就能变成/archives/{cid}//archives/{slug}.html,让链接看上去完全是静态地址。这需要服务器打开rewrite功能。本文记录了打开过程。

由于typecho位于docker中,先进入docker容器。
docker exec -it typecho bash

root@6318031c522f:/app# ls
admin config.inc.php index.php install install.php usr var
root@6318031c522f:/app# cd /etc/
root@6318031c522f:/etc# ls
apache2
服务器使用的是apache2。
root@6318031c522f:/etc# cd apache2/
root@6318031c522f:/etc/apache2# ls
apache2.conf conf-available conf-enabled envvars magic mods-available mods-enabled ports.conf sites-available sites-enabled
root@6318031c522f:/etc/apache2# nano apache2.conf

<Directory />
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

修改后的样子。原来是None,改成All。
再到网站根目录/app下建立.htaccess文件,内容如下:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

重启apache2,service apache2 restart
再到网站的设置里打开功能

可能会这样,选中仍然开启。
打开网站中的二级链接,如果显示“服务器错误,404-找不到文件或目录。”就是没有成功。

成功了地址就会没有了index.php部分。