.htaccessをWordPressで徹底活用

先日WordPress brandingとWordPressセキュリティの徹底強化についてご紹介したので、今度はややこしいと巷で有名な「.htaccess」に関してお話したいと思います。ひとしきりWordPressのダッシュボードやプラグイン、テーマなどをいじったら、次はまた大きな一歩を踏み出さねばなりません。まずはこのアーティクルでどんな話をするのか、説明しましょう。 Image credit: ptz0n この記事は、http://www.onextrapixel.com/ の許可を得て、翻訳しています。一部変更して翻訳している部分もある場合があります。オリジナルの記事はここよりご覧いただけます。 オリジナルの記事 WordPressのカテゴリページにアクセスすると、以下のようなURLが表示されるかと思います。 個人的にこの「category」という単語はあまり好きではないのですが、WordPressがレンダーしてくるのはこのURLですよね。 「.htaccess」を使えば、この「category」部分を排除して、URLをもっとプロっぽく見せることが出来ます。.htaccessファイルを理解すればもっともっと変更出来る部分は拡がります。 それでは.htaccessファイルをいじる前に基本的なことをおさらいしておきましょうか。 そもそも.htaccessとは? .htaccessは元々はHypertext Accessの略です。コンフィグファイルの1つで、配置されたディレクトリとそれに関連するサブディレクトリを制御する権限があります。独自の機能を制御する為にApache系のWEBサーバーで使用されます。きっと使ってみればすぐに慣れると思いますよ。 NOTE: Windowsベースホスティングの.htaccessファイルはまた全く別の話です。このアーティクルではLinuxベースのホストに関してお話していきます。     .htaccessとApache     .htaccessファイルとApacheの関係を分かり易くする為に、以下の画像を作ってみました。WordPressとWEBサーバ(ここではApache)がどの様な位置関係にあるかにご注目下さい。これは非常にざっくりとした解説でしかないのですが、リアルタイム環境でのデータフローを理解するには充分なのではないかと思います。         上記の画像でご覧いただける通りApacheは.htaccessを経由して進むのですが、Apacheは指示されたものはそのまま持ち込んでしまいます。その為.htaccessは、もし何か複雑な変更が必要な場合でも素人にApacheを触らせないというApacheに対するシールド機能の働きもします。これは言い換えてみると、WEBマスターとしてはhttpd.confを触らずとも.htaccessを編集することによりデータフローや表示結果を変更出来ると言うことを意味します。         では何故直接httpd.confを編集しないのか?     先ほどの説明をご覧いただくと、当然こういう疑問が湧いて来ますよね。このブログをご覧になっている殆どの方は、何らかの形での共有ホストをお使いになっているのではないかと思います。それが何を意味するかというと、1つのサーバがあなたのWEBサイトだけではなく他の多数のWEBサイトをも走らせているということになります。従ってhttpd.confファイルをいじるということは、他のWEBサイトに影響を与える可能性も出てきてしまいます。例えhttpd.confファイルに重要な記述がされていないとしても、他のWEBサイトに影響を及ぼす可能性がある限りホスティング会社はhttpd.confファイルを触らせてはくれるはずがありませんよね。けれど.htaccessファイルを使えば、他のサイトに影響を与えることなくhttpd.confファイルを書き換えたかのような操作をすることが可能となります。これでスッキリしましたか?         ここまでの説明ではっきりしたことをまとめてみましょう。     .htaccessファイルで出来ることは何でもhttpd.confファイルでも実現可能です。 httpd.confファイルで出来ることは何でも.htaccessファイルでも実現可能というわけではありません。 .htaccess編集前に知っておくべきこと .htaccessファイルをさわり始める前に、以下のポイントを押さえておきましょう。 .htaccessファイルには所有者をもドメイン(FTPやcPanelといったツールを含み)から締め出してしまう様な機能もあります。その為、今自分が何をしているのかきちんと把握しながら作業を進めましょう。 ワードラップ機能の付いたエディターを使用している場合は、.htaccessファイルを編集する前にワードラップ機能を無効にすることをお勧めします。Apacheなら問題ないかと思いますが、もしかしたら誤作動を引き起こすことがあるかもしれません。 余分なコード(同じことを目的とした別々のコードセットなど)は避けてください。結果として無限ループを引き起こし、閲覧者が抜け出せなくなる可能性があります。 サブディレクトリへの変更はそのサブディレクトリ内に別の.htaccessファイルを置き、そちらのファイルから特定のコードを削除することにより避けることが可能となります。 RewriteCondを使用する場合は、<IfModule mod_rewrite.c>と</IfModule>の行の間に記述する必要があります。こうすることによりmod_rewriteと呼ばれるApacheの書き換えエンジンを有効化します。もしご利用のApacheでは既に有効化されていたら不要な作業なのですが、ご自身の.htaccessファイルで再度有効化させておいても問題ありません。 いざ.htaccessファイルを開いた時に、既にいくつかのコードが書き込まれている可能性が極めて高いです。これはWordPressのパーマリンク構造に必要なデフォルトなものなので、決して触らないように気を付けてください。参考までに記載しておきますね。 WordPressがルートディレクトリにインストールされている場合 WordPressが「blog」というサブディレクトリにインストールされている場合     変更事項はまずはサブディレクトリでテストしてみてください。 バックアップを忘れずに!WordPressにいかなる変更を加える前に、既存の.htaccessファイルをバックアップする必要性を説いた方がいいですか?答えは「Yes!」ですよね。いくつかのプラグインにはデフォルトに切り替える習性を持っているものがあります。そういった問題を回避する為に.htaccessファイルは必ずバックアップを取っておきましょう。 [adrotate block=”3″]     .htaccessファイルの保護     WordPressのセットアップをリモデルする前に、.htaccessファイルをきちんと保護しておかなければなりません。以下のコードは、外部からの.htaccessファイルに対するいかなるアクセスからも保護してくれます。ファイル名のケースセンシティブのところもきちんと賄ってあるので、ファイル名が.hTACcesSだったとしても、問題なく保護されます。         wp-config.phpファイルの保護     先ほどのコードはWordPress内の重要なファイルはどんなものでも保護してくれます。下記の場合はwp-config.phpファイルを保護しています。         WordPress内のディレクトリを非表示    先日のアーティクルでご紹介した通り.htaccessファイル内で下記のコードを使えば、WordPress内のディレクトリのパブリックビューイングを制限することが可能になります。        こうすることにより変更を加えた特定のディレクトリ内のサブディレクトリへのアクセスをブロックします。         特定のIPアドレスをブロック     もし何らかのIPアドレスがネットワークに障害をきたしていることが分かったら、以下のコードを使ってそのIPアドレスをブロックすることが出来ます。         スパムボットからのコメント拒否     WordPressのwp-comments-post.phpファイル有効時に誰かがコメントを残した場合、ブラウザは関連するラインを戻します。スパムボットがコメントを残した場合はwp-comments-post.phpファイルに直接ヒットするので、関連ラインは生成されません。以下のコードはそのようなスパム活動を検出し、スパムボットにそのまま送り返してしまいます。丁度あなた自身のAkismetを作ってしまうような感じです。         NOTE:4行目のyourdomain.comをwwwを除いたご自身のブログURLや他のプリフィックスに変更してください。         IPアドレスによるwp-adminフォルダへのアクセス制限     wp-adminフォルダはWordPressにとって中核であり、もしハッカーにアクセスされてしまったらそれでもうおしまいです。そのような事態を避ける為に、あなたのIPアドレス以外はwp-adminフォルダへのアクセス権が無いよう制限してしまえばよいのです。以下のコードをルートの.htaccessファイルに書き加え、wp-adminフォルダの中に配置します。こうすることにより変更はwp-configディレクトリ内のみに適用されるようになります。         NOTE:今回の制限を適用させる為には、ISPからの静的IPアドレスが必須となります。また「allow from」という行を加えれば、アクセス権のあるIPアドレスを追加することも出来ます。         ホットリンクの無効化     もし他のWEBサイトが自分のディスクにコピーして再アップロードするのではなく、直接あなたのサーバ上にある画像をそのままソース元とした場合、あなたのディスク容量とバンド幅が消費されてしまいます。これが所謂「ホットリンク」と呼ばれ、貴重なディスクスペースを節約する為にブロックする必要があります。         NOTE:コード内のYourDomain.comは、wwwを除いたあなたのブログのURLに置き換えてください。それからオプションとしてTrustedDomain.comは、ホットリンクを許可したい他のWEBサイトを追加したい場合に置き換えて使ってください。また、http://YourDomain.com/images/HotlinkingNotPermitted.gifの部分は、誰かがあなたの画像をホットリンクした場合に表示される画像です。折角なら彼らの一枚上手をいきましょう。         メンテナンス中の置換ページ表示     テーマブログを変更したり新しいプラグインをテストする必要がある場合、ブログへの訪問者をメンテナンスページへ誘導することをお勧めします。このテクニックは通常、訪問者達にそのWEBサイトがメンテナンス中であることとその予定期間をお知らせする為に用いられます。下記のコードをお使いください。         maintenance.htmlはあなたのWEBサイト上でメンテナンスページとして使用したいページに置き換えてくださいね。それから3行目の数字はあなたのIPアドレスに書き換えるのを忘れないようにしてください。そうしないと自分自身もアップグレード中にメンテナンスページしか表示されないという憂き目をみることになってしまいます。         キャッシュ利用で速度アップ     […]