みなさんは.htaccessというファイルをご存知でしょうか?
.htaccessは、WebサーバのApacheを設定することができるファイルです。
この記事では、
・.htaccessファイルとは
・.htaccessの中身や有効範囲
・.htaccessの設定方法
などの.htaccessの基本的な使い方について解説していきます。
.htaccessファイルは使用するWebサーバーの設定を自由に設定することができますので、興味のある方はぜひ参考にしてください!
.htaccessとは
htaccess(エイチティアクセス)とは、Apache(アパッチ)と呼ばれるWebサーバのソフトウェアを制御するための設定ファイルの1つです。
※Apache(アパッチ)とは、世界中で最もよく使われているWebサーバーのソフトウェアで、基本的に無料なため、個人から企業まで幅広く使用されています。
htaccessを利用することで、さまざまなApacheの設定を行うことが可能です。
具体的には、
・IDとパスワードの制限
・IPアドレスとリモートホストの制限
・タイムゾーンを設定
・文字コードの設定
・表示するページの設定
・インデックスファイルの設定
・URLの自動転送
・エラーページの設定
・特定のファイルをダウンロード
などの設定が可能です。
.htaccessを確認してみよう
ここでは、.htaccessファイルの中身を見ていきましょう。
CakePHPでは.htaccessファイルはCake/webrootに格納されています。
.htaccessは隠しファイルとなりますので、そのままではフォルダから参照することはできません。
・隠しファイルの表示方法
Windowsの場合は、エクスプローラーウィンドウから表示タブを選択し、「ファイル名拡張子」「隠しファイル」にチェックを入れます。
MacやLinux系OSの場合はターミナルからCake/webrootに移動し、「ls -a」コマンドを実行すると.(ドット)で始まる隠しファイルを表示することができます。
$ls -a
表示結果:
. .DS_Store css font index.php .. .htaccess favicon.ico img js
また、.htaccessを設定するには元々のファイルはリネームしてバックアップするか、別名でファイルを作成して、編集後のサーバーにアップロード時に.htaccessにリネームする方法があります。
・.htaccessファイルの中身
CakePHPの3.x系では.htaccessの中身はデフォルトで以下のようになっています。
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
デフォルトでは、mod_rewriteと呼ばれるURLの書き換えを行うモジュールの設定が記述されています。
RewriteEngine On
mod_rewriteを有効にする。
RewriteCond %{REQUEST_FILENAME} !-f
アクセスされたURLにファイルが存在しない場合。
RewriteRule ^ index.php [L]
GETメソッドでアクセスされたデータをindex.phpにリライトする。
htaccessの有効範囲
.htaccessファイルには有効範囲があります。
例えば以下のようにディレクトリTESTAに.htaccessファイルが合った場合は、ディレクトリTESTA、TESTA-1、TESTA-2にhtaccessの設定が有効になります。
ディレクトリTESTB、TESTCには.htaccessファイルの影響は受けません。
TOP--|--TESTA | .htaccessファイル | |--TESTA-1 | |--TESTA-2 | |--TESTB |--TESTC
.htaccessの設定方法
ここでは、実際に. htaccessの設定方法を記述してみましょう。
以下に. htaccessファイルでよく設定する項目を紹介します。
エラーページの設定
404や500などのアクセスした際のエラー時に、オリジナルのエラー表示を設定することができます。
以下のように追記するだけで、404エラーになった場合などに404.htmlが表示されます。
ErrorDocument 400 /400.html ErrorDocument 401 /401.html ErrorDocument 403 /403.html ErrorDocument 404 /404.html ErrorDocument 500 /500.html
リダイレクト
リニューアルなどでサイトのURLやディレクトリを変更した場合に変更前のURLでのアクセスを新しいURLに転送します。
Redirect permanent 変更前URL 変更後URL
以下のように指定すると、どのページからのアクセスも自動的にひとつのURLへ転送することができます。
Redirect 301 .* http://www.sejuku.net/
タイムゾーンの設定
以下の例ではタイムゾーンを日本時間に設定しています。
SetEnv TZ Asia/Tokyo
アクセスの制限
特定のIPアドレスやドメインなどのアクセスを制限したり、許可したい場合は以下のように記述します。
・すべてのアクセスを制限
order deny,allow deny from all
・特定のホストでのアクセスを制限
order allow,deny allow from all deny from sample.co.jp #sample.co.jp を制限 deny from .aaa.com #〜.aaa.com を制限 deny from xxx.xxx.xxx.xxx #制限したいIPアドレス
・特定のホストのアクセスを許可
order deny,allow deny from all allow from sample.co.jp #sample.co.jp を許可 allow from xxx.xxx.xxx.xxx #許可したいIPアドレス
指定した拡張子のファイルを保存する
画像ファイルやPDFなど、PCへダウンロードさせたいファイルの拡張子を指定することができます。
AddType application/octet-stream .txt AddType application/octet-stream .doc AddType application/octet-stream .jpg AddType application/octet-stream .png AddType application/octet-stream .pdf
まとめ
ここでは.htaccessファイルの用途や設定方法などについて解説しました。
普段.htaccessファイルを意識することは少ないと思いますが、Apacheのリダイレクトやエラーページの作成を簡単に行うことができます。
もし、.htaccessファイルについて忘れてしまったら、この記事を思い出してくださいね!