WordPress on Herokuなら無料でWordPressブログを開設できる
紆余曲折を経て、ブログをWordPressに戻した。
ホスティングはHerokuを利用して無料で運営する魂胆だ。
インストールやデプロイはWordPressの日本語版をHerokuに設置する方法を参考にすると問題無く完了したが、過去の記事へのリンクをNot Foundにしないようにパーマリンク構造を引き継ごうとすると上手くいかなかった。
問題点はカスタムパーマリンクを設定すると記事ページが見られない
記事のリンクURLが
nginxのrewriteルールは.htaccessでは変更できない?
WordPress on HerokuのGitHubで指定されているように.htaccessを修正しても状況は変わらず。
.htaccess
# BEGIN WordPress
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</ifmodule>
# END WordPress
そもそも.htaccessのrewriteルールが効いてないのでは?と思い、HTTPサーバのnginxの設定ファイルを確認してみることに。
conf/nginx.conf.erbにそのものズバリのコメントが書いてあった
冒頭のWordPress on Herokuでは、Herokuのbuildpackとしてiphoting/heroku-buildpack-php-tylerを利用しているが、ここで読み込まれているnginx用の設定ファイルは自分のgitリポジトリに適切にコピーして書き換えると上書きできる。
方法は、自分のgitリポジトリに
設定ファイルのオリジナルを取得してディレクトリに置く
% mkdir conf
% cd conf
% wget https://raw.github.com/iphoting/heroku-buildpack-php-tyler/master/conf/nginx.conf.erb
nginx.conf.erbでコメントアウトされている部分を有効化
rewriteルールが書かれている部分を探し、コメントアウトされている箇所を以下のように直して保存。Herokuへデプロイしたら404 Not Foundは解消されてちゃんと見られるようになった。
location / {
# wordpress fancy rewrites
if (-f $request_filename) {
break;
}
if (-d $request_filename) {
break;
}
rewrite ^(.+)$ /index.php?q=$1 last;
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# # redirect to feedburner.
# # if ($http_user_agent !~ FeedBurner) {
# # rewrite ^/feed/?$ http://feeds.feedburner.com/feedburner-feed-id last;
# # }
}