設定ファイル.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)
- リダイレクトの細かな設定 (mod_rewrite)
- エラーページの設定 (ErrorDocument)
- デフォルトページ設定 (DirectoryIndex)
- ベーシック認証
- アクセス制限 (Deny / Allow)
URLやドメインが変わって、旧URLから新URLへの自動遷移に利用します。
HTML のヘッダに書き込むことでもリダイレクトは可能ですが、SEO 的に、設定ファイルで行った方がいいなどとも言われていますね。
mod_rewrite モジュールは、URL の書き換えを行うものですが、その機能を利用してリダイレクトさせることもできます。Redirect ディレクティブより細かな設定が出来ます。「wwwありなし設定」、「index.htmlありなし設定」、「https(SSL)へリダイレクト」など。
ページがなかった時、問題やエラーが発生したときの動作を指定できます。これを指定していないと、ユーザは別の URL へ移動してしまうかもしれないし、レンタルサーバーの広告などが表示される場合もあるので、他のページにリダイレクトさせるか、特定のメッセージを表示するなどの設定をしておいた方が良いです。
クライアントがディレクトリ名の最後に「/」を指定した場合に返すディレクトリインデックスを指定できます。「index.html」「index.php」など。
ディレクトリなどに認証を付けてID/パスワードを確認するダイアログを挟むことができます。「.htaccess」だけでなく「.htpasswd」というファイルも必要です。
外部からのアクセスを拒否または許可することができます。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 で利用可能
正規表現について詳しくはこちら⇒ 正規表現の基本
後方参照について詳しくはこちら⇒後方参照