Photo by adactio
最近WordPressにブログを移行しました。てとこん(@tetokon)です。
しかし、移行して早々パーマリンクの設定で物凄くつまずいたので、ここでメモしておきます。
今後同じ現象に悩まされるどなたかのお力になれれば幸いでございます。
目次
何故かデフォルトの設定でしかリンクにとべない
デフォルトの設定以外ではどれを選んでもうまくいかない…
mod_rewriteが必要
Apacheモジュールがよくわからない方にざっくり説明させていただきますと、ApacheというのはWebサーバーソフトウエアの名前です。
世の中的におそらく一番使われているWebサーバーです。
WordPressはこのApacheというWebサーバー上で動いているのですが、パーマリンクの設定をするのに、Apacheのmod_rewriteという機能を使っているらしいのです。
そこで私は、きっとこのmod_rewriteの機能がうちのサーバーでは有効になっていなくて、だからうまく動いてないんだ!と思いました。
Apacheはちょっとだけ知っている私は、Apacheの設定ファイルhttpd.confにmod_rewriteを有効にする設定を書けばそれで解決するんじゃね?と思ったのですが…それが甘かった…orz
httpd.confに設定できない
そこで気がついたのです。
あれ?そういえばうちのサーバーってどこにApache入ってるの?
このブログはsixcoreでサーバを借りているのですが、WordPressのインストールもワンクリックインストールというsixcoreの機能でやっただけだったので、自分でApacheのインストールなんぞやった覚えがありません…
きっとサーバーに最初からApacheはインストールされていて、それを使っているんだと思います。
つまりApacheの管理はsixcoreさん側がやっていて、私たちユーザー側からはhttpd.confが触れないようになっていると思うのです。
でもsixcoreのサポートページを見るとちゃんとmod_rewrite使えるよ!って書いてあります。
使えるらしいけどどうやって設定するのかがわからない…困った…ホントに困った…
Apacheの設定はhttp.confだけじゃない!.htaccessの存在を知る
そこで.htaccessの存在に辿り着きました!
以下Wikipediaからの引用
Apacheではhttpd.confという設定ファイルでApacheの設定を行うが、Webサーバの要となる設定ファイルであるため、Webサーバの管理者でないと設定を変更することができない。.htaccessはhttpd.confで.htaccessの利用を許可している場合、Webサーバ管理者のみならずウェブサイトの管理者レベルでApacheの一部設定を行えるようにしたものである。
おいおいどう考えてもこれだよこれのことだよこいつを使うに違いない!
あとは.htaccessの書き方を調べられればどうにかなるはず!
.htaccessに何を書くか
英語だけど。
The htaccess Rules for all WordPress Permalinks : Perishable Press
WordPressをサーバーのルートディレクトリにそのままインストールしてる人はこんな書き方。
# 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
ルートディレクトリじゃなくて、例えば/foo/っていうサブディレクトにインストールしてる人はこんな書き方。
/foo/の部分はご自身の環境にしたがって書き換えてください。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /foo/
RewriteRule ^indexÅ_.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /foo/index.php [L]
</IfModule>
# END WordPress
これを自分のサーバーの、WordPressをインストールしているディレクトリに置いて解決しました。
長かった…二日ぐらいこれに費やしました…
ちなみにですが、そんなファイルねーよって方は、ご自身が使ってるFTPクライアントの設定を見なおしてみてください。
UnixとかのOSだとファイル名が.(ドット)から始まるファイルは不可視ファイルとされていて普通には見えません。
不可視ファイルを見えるようにする設定にしてみてください。
それでも見つからなかったらそもそも.htaccessファイルがない可能性があります。
ご自身で作ってください。