金曜の夜にサーバーの設定をちょっといじった際、うっかり設定をミスしてしまってトップページ以外がしばらく表示されないという状態になっていました。先日公開したWindows Updateの記事が全然見られない状況になっていたようで大変失礼いたしました。
ひとことで言うと「アクセス制御を設定するときに設定ファイルの消しちゃいけないところを消しちゃっててんやわんやになっていた」という事になります。
一応専門的にも説明しておきます。このブログをおいているサーバーはレンタルサーバーではなくVPSになっています。なので、サーバーの細かい設定についても自分でできるようになっています。アクセス制限などの設定はすべてhttpd.confで行っていて各ディレクトリの.htaccessが無効になるようにしています。
.htaccessをいろんなフォルダで使えるのはそれはそれで便利なのですが、「分散利用はしないほうがいい」というのがApache公式の見解なので、それに沿う形にしています。(そうしたほうがレスポンスが若干良くなるという話もある)
一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、
.htaccess
ファイルの使用は極力避けてください。 世の中には、例えば、ユーザ認証は常に.htaccess
ファイルで 行なわなければならない、という誤解が広まっていますが、まったくそんなことは ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、 実際、その方がより良い設定方法です。
上述の通り.htaccessを全ディレクトリで無効にしてたので、Wordpressで設定しなければいけない下記のリライトルールもhttpd.confに書き込んでました。
# 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
ここを誤って消しちゃってたんですね……消しちゃうとトップページ以外は全くアクセスできなくなってしまいます。通常レンタルサーバーではhttpd.confをいじれるケースはないはずですし、普通は必要に応じてWordpress側が.htaccessを書き換えてくれるのであまり起きないケースだとは思いますが、メモとして残しておきます。いやはやご迷惑をお掛けしました。