ラズパイ上のWordPressで、パーマリンク設定が動いていないことに気付き、Apacheの設定を見直すことに。
Raspberry Pi OSはDebianベースなので、CentOSとはかなり異なっていて、Apacheの設定ファイルに戸惑う。 だいたいサービス名がhttpdとapache2と異なること自体好きになれないのだが。
最終的にmod_rewriteモジュールが動作していないことが原因だと分かったので以下の修正をおこなった。
1.mod_rewriteを有効にする
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
使えることが確認できたのでa2enmodコマンドを実行
$ sudo a2enmod rewrite
これで/etc/apache2/mods-enabled/rewrite.loadというリンクができ動作可能となる。
2./etc/apache2/apache2.confの修正
170行あたりのAllowOverride NoneをAllに修正
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
3.ドキュメントルートディレクトリにある.haccessを確認。
以下の内容であれば問題ない。
# BEGIN WordPress
# "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は
# 動的に生成され、WordPress フィルターによってのみ修正が可能です。
# これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
尚、これの先頭に以下の2行を追記すると、問題なければ、http://自分のWebサイトのルート/testでyahooにリダイレクトされるので、mod_rewriteモジュールの動作が正常か否かの確認に便利。
RewriteEngine on
RewriteRule test http://yahoo.co.jp/ [R=301,L]
勿論、確認後はこの2行は削除すること。
4.再起動
設定を変更したらリスタートを忘れずに。
$ systemctl restart apache2