前回は、WordPressのデータ移行を行った。
今回はそのインポート後に起こった問題の対応。
パーマリンクが意図した設定になっていない事が判明したのだ。
デフォルトでは「基本」になっていると思われるし、私としては「月と投稿名」の設定にしたかったのだが、実際は「カスタム設定」の
https://yourhost.sakura.ne.jp/tekitoublog [ /index.php/%year%/%monthnum%/%day%/%postname%/ ]
となっている。
変更したい設定を選んで「変更を保存」ボタンを押せば変更は可能。
だが、次のようなメッセージを表示して、手作業で変更が必要になってしまっている。
原因は、.htaccessファイルをWordPressが変更できなかったから。
では、なぜ?
とりあえず、ファイルの属性を見てみる。
$ ls -la /var/www/nantokablog/.htaccess -rw-rw----. 1 apache apache 90 2月 23 01:01 /var/www/naktokablog/.htaccess
所有ユーザーと所有グループも書き込み可能だ。
そして、所有ユーザーとグループもapacheとなっている。
もしなっていない時は、ファイル属性の変更と、ユーザーの変更をしてみよう。
# chmod u+w /var/www/nantokablog/.htaccess # chown apache:apache /var/www/nantokablog/.htaccess
でも、これでも変更できない時は、やっぱりSELINUXが原因かも。
ファイルのセキュリティ属性を調べてみる。
$ ls -laZ /var/www/nantokablog/.htaccess -rw-rw----. 1 apache apache unconfined_u:object_r:httpd_sys_content_t:s0 90 2月 23 01:01 /var/www/nantokablog/.htaccess
httpd_sys_content_t
となっており、書き込みを可能にするにはhttpd_sys_rw_content_t
にする必要がある。
# chcon -t httpd_sys_rw_content_t /var/www/nantokablog/.htaccess $ ls -laZ /var/www/nantokablog/.htaccess -rw-rw----. 1 apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 90 2月 23 01:01 /var/www/nantokablog/.htaccess
ここまでやると「変更を保存」ボタンで、.htaccessを勝手に編集してくれ、私の場合、次のような内容になった。
$ cat /var/www/nantokablog/.htaccess # BEGIN WordPress # "BEGIN WordPress" から "END WordPress" までのディレクティブ (行) は # 動的に生成され、WordPress フィルターによってのみ修正が可能です。 # これらのマーカー間にあるディレクティブへのいかなる変更も上書きされてしまいます。 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase /blog/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /blog/index.php [L] </IfModule> # END WordPress
そんなにしょっちゅう変えるものではないし、変更し終わったらセキュリティ属性をもとに戻しておこう。
# restorecon /var/www/nantokablog/.htaccess
ということで、パーマリンクの設定が変更できた。
一つ一つが面倒だが、考えて対処すれば、なんてことはない。と言いたいが、めちゃ時間がかかる。面倒くさい。
と言っていても始まらないので、次回は、更に発生したインポート時のトラブルを解決させていきたい。