.htaccessでできること

Webサーバ用の設定ファイル「.htaccess」でできることを6つをまとめました。
※ファイル名は、「.htaccess.txt」などは禁止。
※.htaccess 設定のディレクティブ階層上から順番に適用される。

①アクセス制限(BASIC認証)

↓WordPressでのベーシック認証

ベーシック認証を用いると、指定されたディレクトリにアクセスした人に対してIDとパスワードの入力エリアのついたダイアログボックスを表示し、認証情報の入力を求めることができます。
.htaccessと.htpasswdの2つのファイルを使います。

.htaccess


AuthType Basic
Require Group admins
AuthName "パスワード必要"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
   

.htpasswd  ※idとパスワードは任意


id:password

↓WordPressでのベーシック認証の手順
特定のページのみベーシック認証をかける方法

②ファイル一覧出力拒否

index.php等デフォルトページがあるので使わないと思いますが、特定のディレクトリだけ一覧表示させたくないような場合は、
そのフォルダ内にだけ .htaccess ファイルを作成してアクセス制御を行うことができます。
※下位ディレクトリに 上位階層のディレクトリとは別の .htaccess があれば下位ディレクトリの .htaccess の設定が優先されます。


Options -Indexes

③デフォルトページを変更する

通常index.phpがデフォルトページですが、値を複数指定すると「index.php」→「index.html」→「main.html」の順で優先的に決まります。


DirectoryIndex index.php index.html main.html

③エラーページの指定

ユーザがエラーページを開いてしまった場合、デフォルトの404ページではなく独自に用意した404ページを表示させることができます。


ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

⑤SSL リダイレクト

「http://」でとんでも「https://」に常にとぶようにする記述も.htaccessで行います。



RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

⑥301 リダイレクト

あるURLに対するアクセスを別のURLへと転送するリダイレクト設定も.htaccessに定義できます。
301は永久的で302は一時的なリダイレクトを指します。

ページ単位でリダイレクトする場合

※「☆☆.html」から「△△.html」に転送する場合


RewriteEngine on
RewriteRule ^☆☆.html$ https://www.〇〇.com/△△.html [L,R=301]

ディレクトリ単位でリダイレクトする場合

※「/☆☆/」から「/△△/」に転送する場合


RewriteEngine on
RewriteRule ^☆☆(.*)$ /△△$1 [L,R=301]