.htaccess の利用

目次

  1. .htaccess の利用
  2. .htaccess の記述例

.htaccess の記述例

.htaccess の代表的な記述例をご紹介します。

.htaccess の記述例につきまして動作保証やサポートは行っておりませんので、お客様の責任のもとご利用環境に合わせて編集のうえご使用ください。
.htaccess の記述方法はインターネットや書籍にてお調べください。

■ファイル一覧の表示を拒否する

ホームページを設置したアドレスにファイル名を指定せずにアクセスすると、そのディレクトリにある index.html などのインデックスファイルが表示されますが、index.html などのインデックスファイルを設置していない場合、そのディレクトリ内にあるファイルの一覧を表示してしまいます。
.htaccess を設置することで403エラーを返し、ファイル一覧の表示を拒否することで、セキュリティを高めることができます。

記述例
Options -Indexes
  • ファイル一覧を表示したい場合は、「Options +Indexes」と記述します。

 

■重要なデータファイルへのブラウザからのアクセスを拒否する

アドレスを公開していなくても、ブラウザのアドレス欄に特定のファイルのアドレスを直接入力すると、閲覧できてしまいます。そのファイルにパスワードや顧客データなどの重要なデータが記述されていたら情報が漏えいしてしまいます。
.htaccess を設置することでデータファイルへのブラウザからのアクセスを拒否することができます。

記述例
データファイルによくある'.dat''.log''.csv'といった拡張子のついたファイルへの
ブラウザからのアクセスを拒否する場合
<Files ~ "\.(dat|log|csv)$">
deny from all
</Files>

 

■特定のドメインからのみアクセスを許可する

特定のドメインを他のドメイン下のディレクトリに設定する場合、特定のドメインのページを他のドメインのURLで表示できてしまいます。
例えば、home/アカウント名/public_html に独自ドメインのアドレス(http://www.example.com/)を設定しても、KAGOYA Internet Routing のセレクトドメインのアドレス(http://アカウント名.kir.jp/など)で表示することが可能です。
.htaccess を設置することで、他のドメインからのアクセスを拒否することができます。

記述例
http://www.example.com/ からのみアクセスを許可する場合
SetEnvIf Host "^www\.example\.com$" hos_ok
order deny,allow
deny from all
allow from env=hos_ok

 

■他のドメインのアドレスにリダイレクトする

特定のドメインを他のドメイン下のディレクトリに設定する場合、特定のドメインのページを他のドメインのURLで表示できてしまいます。
例えば、home/アカウント名/public_html に独自ドメインのアドレス(http://www.example.com/)を設定しても、KAGOYA Internet Routing のセレクトドメインのアドレス(http://アカウント名.kir.jp/など)で表示することが可能です。
.htaccess を設置することで、他のドメインのアドレスにリダイレクトすることができます。

記述例
http://abc.kir.jp/ へのアクセスを http://www.example.com/ にリダイレクトする場合
RewriteEngine on
RewriteCond %{HTTP_HOST} abc\.kir\.jp [NC]
RewriteRule .* http://www.example.com%{REQUEST_URI} [L,R=301]

 

■常時SSLを有効にする( https リダイレクト )

SSLを設置しても、通常の http でのアクセスでは、SSLは有効になりません。https でアクセスする必要があります。
例えば、SSLを有効にしたいアドレス(https://www.example.com/)に対して、SSLが有効にならないアドレス(http://www.example.com/)でも表示できてしまいます。
常時SSLを有効にしたいドメインの割り当てディレクトリに .htaccess を設置することで、SSLが有効にならないアドレスでアクセスがあった場合に、SSLが有効なアドレスでのアクセスに切り替えることができます。

記述例
http://www.example.com/ へのアクセスを https://www.example.com/ にリダイレクトする場合
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

 

■常時SSLを有効にする( HSTS 有効化 )

IPAのSSL/TLS暗号設定ガイドラインでは、HTTP Strict Transport Security(HSTS)の設定有効化が推奨されています。http でのアクセスを https でのアクセスにリダイレクトするよう設定していても、最初に http でアクセスした時点で攻撃者がユーザーの Cookie を傍受し個人情情報を収集したり、フィッシングサイトへリダイレクトしたりする可能性があり、セキュリティ上の問題が残ります。こうした危険を減らすことができるのが HSTS です。

記述例
ブラウザ側に https でのアクセスを強制するヘッダ情報をキャッシュさせる期間を365日に設定する場合
Header add Strict-Transport-Security "max-age=31536000"

■参考URL SSL/TLS暗号設定ガイドライン(IPA発行)
https://www.ipa.go.jp/security/ipg/documents/ipa-cryptrec-gl-3001-2.0.pdf

 

■SSL証明書とは異なるホスト名に https でアクセスがあった場合に http に切り替える

IPベースのバーチャルホスト設定をしているサーバーでは、SSLを設置していないホスト名に https でアクセスすると、SSLが設置されている異なるホスト名にアクセスされてしまいます。
例えば、SSLを設置していないホスト名(www.example.com)に https://www.example.com/ でアクセスしようとすると、SSLが設置されている異なるホスト名(www.first-ssl.com)のコンテンツが表示されてしまいます。
.htaccess をSSLが設置されているホスト名の割り当てディレクトリに設置することで、SSL証明書とは異なるホスト名に https でアクセスがあった場合に、http でのアクセスに切り替えることができます。

記述例
SSLが設置されている www.first-ssl.com とは異なるホスト名で https にアクセスがあったら http にリダイレクトさせる場合
RewriteEngine on
RewriteCond %{HTTP_HOST} !first-ssl\.com$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
  • SSLが設置されているホスト名の割り当てディレクトリに .htaccess を設置してください(上記例の場合は、SSLが設置されている www.first-ssl.com の割り当てディレクトリに .htaccess を設置します)。

 

■特定のIPアドレスからのアクセスを拒否する

特定のIPアドレスから過度なアクセスのため、お客様サーバーの転送量やアクセス数が浪費されてしまい、最悪の場合はお客様サーバーが帯域調整や同時接続数制限の対象となり、お客様サイトの表示が遅くなるなどの影響が生じます。
.htaccess を設置することで、特定のIPアドレスからのアクセスを拒否することができます。

記述例
123.456.789.123 からのアクセスを拒否する場合
order allow,deny
allow from all
deny from 123.456.789.123
  • 例示した 123.456.789.123 は、実在しないIPアドレスです。IPアドレスは、「.(ドット)」で区切られた 0 ~ 255 の数字4組で表記されます。

 

■特定のIPアドレスからのアクセスのみ許可する

Webサーバーでグループウェアなどを利用して情報共有をする場合、インターネットに接続できる環境であればどこからでもアクセスできてしまうため、情報漏えいのリスクが伴います。
.htaccess を設置することで、特定のIPアドレスからのアクセスのみ許可することができます。

記述例
123.456.789.123 からのアクセスを許可する場合
order deny,allow
deny from all
allow from 123.456.789.123
  • 例示した 123.456.789.123 は、実在しないIPアドレスです。IPアドレスは、「.(ドット)」で区切られた 0 ~ 255 の数字4組で表記されます。

 

■画像ファイルへの直リンクを拒否する

お客様サイトの画像が、直リンクなどで他人のサイトで引用されると、他人のサイトによってお客様サーバーの転送量やアクセス数が浪費されてしまい、最悪の場合はお客様サーバーが帯域調整や同時接続数制限の対象となり、お客様サイトの表示が遅くなるなどの影響が生じます。
.htaccess を画像ファイルのディレクトリに設置することで、お客様サイト以外からのリンクを拒否することができます。

記述例
お客様サイト http://www.example.com/ からのリンクのみ許可する場合
SetEnvIf Referer "^http://www\.example\.com" ref_ok
order deny,allow
deny from all
allow from env=ref_ok

 

■特定のディレクトリに Basic 認証を設定する

お客様サイト内の特定のディレクトリを、特定のユーザーだけに公開したい場合には、 .htaccess を設置することで、ユーザー名とパスワードによる Basic 認証をかけることができます。

.htpasswd ファイルの作成方法

Basic 認証には .htaccess ファイルの他に認証に使用するユーザー名とパスワードを設定する .htpasswd ファイルが必要です。以下の手順で .htpasswd ファイルを作成し、所定の場所にアップロードします。

  1. 認証に使用するユーザー名とパスワードを次のフォームに入力し「Basic 認証用パスワードを作成」をクリックします。

    ユーザー名:
    パスワード:


    生成された文字列をコピーします。

  2. テキストエディタを開き、生成された文字列を記述したテキストファイルを任意の名前で保存します。

  3. 作成したファイルを、FTPソフトを使って、所定のディレクトリにアップロードします。
    このマニュアルでは /home/(アカウント名)/ 直下の非公開ディレクトリにアップロードします。
  4. アップロードしたファイル名を、「.htpasswd」に変更します。

記述例
.htpasswd ファイルを /home/(アカウント名)/.htpasswd に設置する場合
AuthType Basic
AuthName "secret area"
AuthUserFile /home/(アカウント名)/.htpasswd
Require valid-user

当社コントロールパネルのアクセス制限機能を利用するとより簡単に設定できます。

◇コントロールパネル > システム > Webサイト > アクセス制限

設定方法に関しては、「アクセス制限」をご確認ください。

 

■特定のファイルのみに Basic 認証を設定する

WordPress や EC-CUBE の管理画面、グループウェアなどのログイン画面をインターネット上に公開している場合、インターネットに接続できる環境であればどこからでもアクセスできてしまうため、ブルートフォース攻撃などにより不正ログインされるリスクが伴います。
.htaccess を設置することで、ログイン画面にユーザー名とパスワードによる Basic 認証をかけることができます。

記述例
wp-login.php に Basic 認証を設定する場合
<Files wp-login.php>
AuthType Basic
AuthName "secret area"
AuthUserFile /home/(アカウント名)/.htpasswd
Require valid-user
</Files>
  • Basic 認証には .htaccess ファイルの他に認証に使用するユーザー名とパスワードを設定する .htpasswd ファイルが必要です。以下の手順で .htpasswd ファイルを作成し、所定の場所にアップロードします。
    ⇒ .htpasswd ファイルの作成方法

 

■トップページとなるファイル名を設定する

URL にファイル名までを含めずに、http://www.example.com/ のようにディレクトリへ直接アクセスしたときに表示するファイル名は、サーバー側であらかじめ設定されています。
.htaccess を設置することで、あらかじめ設定されたファイル名以外の名前のファイルを表示するように設定を変更することができます。

記述例
お客様サイト http://www.example.com/ にアクセスしたときに、http://www.example.com/top.html を表示させる場合
DirectoryIndex top.html

 

■拡張子が .shtml だけでなく、.html でも SSI を使用する

SSIをご利用いただく場合、そのHTML文書の拡張子は、.shtml とする必要があります。
.htaccess を設置することで、拡張子が .html でも SSI を使用することができます。

  • この設定をした場合、すべての .html ファイルに対して SSI 処理を行うことなり、サーバーに負荷がかかる原因となりますので、おすすめはいたしません。

記述例
拡張子が .html でも SSI を使用する場合
# Apache1.3.x の場合
AddHandler server-parsed .html

# Apache2.x の場合
AddOutputFilter includes .html

Apache バージョンを確認するには、当社コントロールパネルで、以下の画面を開きます。

◇コントロールパネル > システム > Webサイト > サーバー情報

 

■PHP のエラーログを出力する

PHP のエラーログを出力するには、PHP の設定で log_errors を ON にする必要があります。
PHP マニュアル > php.ini ディレクティブのリスト」を確認すると、このディレクティブは「PHP_INI_ALL」なので、.htaccess ファイルを設置することで設定を変更できます。

記述例
php_flag log_errors On

PHP のエラーは Apache のエラーログに出力されます。エラーログを確認するには、当社コントロールパネルで、以下の画面を開きます。

◇コントロールパネル > システム > Webサイト > ログサービス > エラーログ

目次

  1. .htaccess の利用
  2. .htaccess の記述例