.htaccessとは
.htaccessとは、Webサイトへのアクセスをサイトやページの単位で制御するための設定ファイルです。
設置したディレクトリ以下に設定を反映することができます。
例えば、以下のようなディレクトリ構成なら、「dir1」およびそのサブディレクトリ(ここでは「dir3」、「index.html」)に設定が適用されます。
root_dir
├── dir1
│ ├── .htaccess
│ ├── dir3
│ └── index.html
└── dir2
アクセス制御
指定した条件下で、ユーザからのアクセスに対してアクセス制限を設けることができます。
IP制限
Denyディレクティブで指定したIPアドレスからのアクセスを拒否することができます。
#アクセスの優先順位を設定 許可=>拒否
Order Allow,Deny
#全てのアクセスを許可
Allow from all
#指定したIPアドレスからのアクセスを拒否
Deny from アクセスを拒否するIPアドレス1
Deny from アクセスを拒否するIPアドレス2
Basic認証
Basic認証は、リリース前のサイトなどに簡易的なアクセス制限をかけたい場合に使われるアクセス制限です。
ユーザ名とパスワードの組合せで認証します。
認証に使うユーザ名とパスワードを記録するファイル(.htpasswd)をhtpasswdコマンドで作成します。
htpasswd -c [.htpasswdを配置するパス]/.htpasswd [ユーザ名]
New password: 🔑
パスワードを入力すると、.htpasswdファイルが自動生成されます。
内容は、[ユーザ名]:[MD5ハッシュ化されたパスワード]となっています。
hogehoge:$apr1$yGboV/k7$fBcIQ1WuFiNWkt4hWflMS.
.htaccessに設定することで、上の手順で設定したユーザ名とパスワードの組合せで認証を行うことができます。
AuthType Basic
#アクセス時に表示されるメッセージ
AuthName "Please enter your ID and password"
#.htpasswdファイルのパス
AuthUserFile "/path/to/.htpasswd"
require valid-user
リダイレクト設定
特定のURLへのアクセスを、指定したページにリダイレクトさせることができます。
主に301リダイレクトと302リダイレクトがありますが、次のように使い分けます。
- 301リダイレクト(恒久的転送)
- 302リダイレクト(一時的転送)
サイトの引っ越しなどの恒久的な転送には301リダイレクトを、メンテナンス時などの一時的な転送には302リダイレクトを使います。
[R=301]をつけることで301リダイレクト、[R]をつけるか何もつけない場合は302リダイレクトの設定にすることができます。
301リダイレクト
<IfModule mod_rewrite.c>
#rewrite_modモジュールの機能を有効化
RewriteEngine on
#301リダイレクト
RewriteRule ^(.*)$ index.php [R=301]
</IfModule>
302リダイレクト
<IfModule mod_rewrite.c>
#rewrite_modモジュールの機能を有効化
RewriteEngine on
#302リダイレクト
RewriteRule ^(.*)$ index.php [R]
</IfModule>
404リダイレクト
存在しないURLへのアクセスを、指定したページにリダイレクトします。
この場合、指定した静的ページ404.htmlにリダイレクトされます。
ErrorDocument 404 /404.html