今日は久々WordPressの話題をご報告です。
インストールしてしばらく使われていなかったWordPress、ちょっとした設定が必要となりました。
一言で言うとmod_rewriteの設定が必要になった、というものです。
WordPressでページの作成をしていると…
パーマリンクを設定して公開するようにし、固定ページを表示とかLPを表示をク
リックしたり変更をプレビューをクリックして選択すると、エラー「Not Found」になっちゃいまして…
「このウェブサイト上に、そのURLが見つかりません」
とエラーメッセージが表示され、想定している動作が実行されない(ページが出てこない)という状況。
別の操作でも「.htaccess を更新する必要があります。」というメッセージが表示、設定からパーマリンク画面の下部には「あなたの .htaccess が書き込み可能ならこの操作は自動的に行われますが、(云々)」というメッセージが表示されます。
WordPress がファイルを編集できなくてエラーになっているようです。
解決策は
※WordPress Codex 日本語版<パーマリンクの使い方 - WordPress Codex 日本語版>で見たところ…
「mod_rewrite」を有効化する、ないし.htaccessファイルを用意する必要があるようです。
おかしいな…。.htaccessファイルはWeb管理者ユーザなら更新できるようにしてあったはずなんですけども…?
ひとまずmod_rewriteを有効化する、という対処が必要という結論に達しました。
ちなみに対象の環境はDebianのApache2.2系です。
mod_rewriteを有効化する
確か以前ハマった時の記憶で「AllowOverride」でAllやNoneを定義してmod_rewriteを制御する、という方法だった記憶をもとに、apacheのconfファイルを探してみました。
AllowOverrideがどうかを確認しようと以下のコマンド、
$ cat /etc/apache2/apache2.conf | grep AllowOverride | less
を実行してみると…
あれ?なんも出てきません。
前にCentOSでやったときは確かhttpd.confにAllowOverrideが記述されていたんだけどなぁ。
ひとまずrewrite.loadがあるかどうかを確認します。
----------------------------------------------
$ cat /etc/apache2/mods-available/rewrite.load
LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
----------------------------------------------
mod_rewrite.soはLoadModuleにあるので問題なさそうです。
有効かどうか、というのも確認しておきます。
----------------------------------------------
$ ls -al /etc/apache2/mods-enabled/rewrite.load
lrwxrwxrwx 1 root root 30 Oct 29 2014 /etc/apache2/mods-enabled/rewrite.load -> ../mods-available/rewrite.load
----------------------------------------------
む、どうやら既にmod_rewriteは有効化されています。
と、いうことは、apacheの設定ファイルで有効化されていないってだけですね。
ちょっと調べてみると、AllowOverrideの記述は「/etc/apache2/sites-available/default」内で定義されていました。
----------------------------------------------
$ sudo vi /etc/apache2/sites-available/default
----------------------------------------------
でさっそくWordPressディレクトリ配下の「AllowOverride All」の設定を追記します。「AllowOverride None」があればコメントアウトなり削除なりしておく感じですね。
ここでapache再起動。
これでWordPressのmod_rewriteを有効化できました、
と、思っていたら、思わぬ落とし穴が一点あり、時間をロスしてしまいました。
続きは明日へ。