【.htaccess】設定ファイルで出来ること

.htaccess logo

設定ファイル.htaccess、私はリダイレクトぐらいでしか利用していないのですが、色々便利なので、しっかり理解するためにまとめてみたいと思います。

.htaccess とは

.htaccess(ドット・エイチ・ティー・アクセス)とは、Apache を用いた Web サーバーの管理ファイルです。( Apache は一時期6割ぐらいのシェアがありましたが、最近 Nginx のシェアが伸びてきているみているみたいですね。.htaccess で設定を行う場合は、利用している Web サーバーが Apache なのか要確認です。)

Apache の設定は、サーバー管理者なら、httpd.conf で行うのですが、私のように、レンタルサーバーを利用している立場ですと、httpd.conf をいじるなんてこと、できません。httpd.conf で行う設定を、サイトの管理者レベルでも一部行えるのが、この.htaccess ファイルです。ただ、.htaccess で利用可能なコマンドは、httpd.conf で許可されているものに限ります。上手くいかないようであれば、利用可能なコマンドかどうか、サーバー会社側に問い合わせが必要ですね。

設定は割合簡単で、ディレクトリ単位で行います。

「.」で始まると、一瞬、拡張子か何か?と思ってしましますが、UNIX系のOSでは隠しファイルを意味しています。

.htaccess でよく利用される設定

出来ることはたくさんあるのですが、よく使われているものをピックアップして、次回以降一つずつまとめていきたいと思います。。

  • リダイレクト (Redirect)
  • URLやドメインが変わって、旧URLから新URLへの自動遷移に利用します。
    HTML のヘッダに書き込むことでもリダイレクトは可能ですが、SEO 的に、設定ファイルで行った方がいいなどとも言われていますね。

  • リダイレクトの細かな設定 (mod_rewrite)
  • mod_rewrite モジュールは、URL の書き換えを行うものですが、その機能を利用してリダイレクトさせることもできます。Redirect ディレクティブより細かな設定が出来ます。「wwwありなし設定」、「index.htmlありなし設定」、「https(SSL)へリダイレクト」など。

  • エラーページの設定 (ErrorDocument)
  • ページがなかった時、問題やエラーが発生したときの動作を指定できます。これを指定していないと、ユーザは別の URL へ移動してしまうかもしれないし、レンタルサーバーの広告などが表示される場合もあるので、他のページにリダイレクトさせるか、特定のメッセージを表示するなどの設定をしておいた方が良いです。

  • デフォルトページ設定 (DirectoryIndex)
  • クライアントがディレクトリ名の最後に「/」を指定した場合に返すディレクトリインデックスを指定できます。「index.html」「index.php」など。

  • ベーシック認証
  • ディレクトリなどに認証を付けてID/パスワードを確認するダイアログを挟むことができます。「.htaccess」だけでなく「.htpasswd」というファイルも必要です。

  • アクセス制限 (Deny / Allow)
  • 外部からのアクセスを拒否または許可することができます。IPアドレス、ホスト名などを指定できます。

.htaccess の設置場所


.htaccess はディレクトリごとに有効になります。この図の場合、.htaccess(A)は、blue-box ディレクトリと、その中に含まれる yellow-box ディレクトリに有効となります。
.htaccess(B) は、yellow-box のみに有効となります。
全く外にある green-box ディレクトリは、.htaccess(A)、(B)ともに、影響を受けません。

.htaccess の基本的な書き方

ファイル名: .htaccess
テキストエディタで作成したファイルは、拡張子無しで “.htaccess” として保存します。OS の方で、拡張子無しの保存が出来ない場合は、取りあえず “.htaccess.txt” として、転送後にファイル名を変更します。

コメントアウト: # で始まる行
“#” で始まる行がコメントになります。基本的には、コメント行は独立させます。

文字コード: UTF-8
テキストエディタで保存の際に、文字コードを “UTF-8” に指定します。

改行コード: LF
テキストエディタで保存の際に、改行コードを “LF” に指定します。
改行をすると、構文の終端とみなされるので、基本的に構文の途中で改行はしません。
また、ファイルの最終行には空行を入れる必要があります。

転送場所: ディレクトリごとに有効
.htaccess の有効範囲はディレクトリごととなります。(上記、「.htaccess の設置場所」参照)
複数 .htaccess ファイルがある場合、内容が被れば、より深い階層のものが上書きされます。

パーミッション: 644
Web サーバに転送後、パーミッションを “644(rw-r–r–)” に指定します。

正規表現:Macht の含まれるディレクティブ、RewriteRule、RewriteCond で利用可能
正規表現について詳しくはこちら⇒ 正規表現の基本
後方参照について詳しくはこちら⇒後方参照