.htaccess ファイル

Webサーバの動作をディレクトリ単位で設定するためのファイル。
それが位置するディレクトリおよびサブディレクトリ全体に影響を及ぼす。
サーバはまず、httpd.conf に書かれている設定を有効にし、次に .htaccess ファイルがある場合は、その設定をオーバーライドする。.htaccess が複数見つかった場合、上位から下位ディレクトリに向けてオーバーライドされる。


リモートIP/ホストによるアクセス制限

ブラック・リスト(「RequireAll」とし、「すべてを許可」と「拒否するもの」をリスト・アップ)
「RequireAll」は全ての条件にマッチする場合のみアクセスを許可する。

<RequireAll> Require all granted Require not host .cn Require not host .res.rr.com Require not ip 82.141.189.238 </RequireAll>

ホワイト・リスト(「RequireAny」とし、「すべてを拒否」と「許可するもの」をリスト・アップ)
「RequireAny」はいずれかの条件にマッチする場合はアクセスを許可する。

<RequireAny> Require all denied Require ip 127.0.0.1 Require ip 192.168.1. Require host .jp Require host .bbtec.net Require host .sec.nifty.com </RequireAny>

※<RequireAll|Any|None> のディレクティブを省略した場合は RequireAny として動作する。
ホワイト・リストは省略して下記のように書ける。

ホワイト・リスト(「許可するもの」をリスト・アップ)

Require ip 127.0.0.1 Require ip 192.168.1. Require host .jp Require host .bbtec.net Require host .sec.nifty.com

ファイルを見れないようにする

・拡張子が「.dat」であるすべてのファイルを見れないようにする。

<FilesMatch "\.dat$"> Require all denied </Files>

・拡張子が「.gif」「.jpg」「.png」であるファイルのみを見れないようにする。

<FilesMatch "\.(gif|jpg|png)$"> Require all denied </Files>

・「access.log」というファイルだけ見れないようにする。

<FilesMatch "^access\.log$"> Require all denied </Files>

・「.htaccess」と「.htpasswd」ファイルを見れないようにする。

AddHandler cgi-script .htaccess AddHandler cgi-script .htpasswd

または、

<FilesMatch "^\.(htaccess|htpasswd)$"> Require all denied </Files>

AddType で MIME タイプと文字コードを指定する

AddType "text/html; charset=EUC-JP" .html

.htaccess を作成したディレクトリ(及びそのサブディレクトリ)に存在する拡張子 html のファイルすべてに対して、HTTP ヘッダー内で明示的に文字コードが EUC-JP に指定される。

その他、例:

AddType "text/xml; charset=utf-8" .xml .rdf

・MIMEタイプとは、ファイルの種類と拡張子の関連付けを行い、「タイプ名/サブタイプ名」のような形式となっている。

形式拡張子MIMEタイプ
テキスト.txttext/plain
html.html .htmtext/html
JavaScript.jstext/javascript
XML.xmltext/xml
cgi.cgiapplication/x-httpd-cgi

PHP の設定 (httpd.conf や php.ini の設定を変更する)

例:

php_value date.timezone Asia/Tokyo php_value default_charset UTF-8 php_flag register_globals Off php_value mbstring.language Japanese php_value mbstring.internal_encoding UTF-8 php_value mbstring.http_input auto php_value mbstring.http_output UTF-8 php_flag mbstring.encoding_translation On php_value mbstring.detect_order auto php_value mbstring.substitute_character none php_flag output_buffering Off php_value output_handler none php_value session.use_trans_sid 0

「http」へのアクセスを「https」へリダイレクトする

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

「www」有りのアクセスを「www」無しへリダイレクトする

RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Basic 認証

SSLRequireSSL AuthType Basic AuthUserFile /YOUR-DIRECTORY(FULL PATH)/.htpasswd AuthName "Input your ID and Password." Require valid-user

※AuthUserFile のフルパスは下記内容の PHP ファイルにアクセスすることで調べられる。

<?php echo __FILE__; ?>

※.htpasswd の書式は、ユーザ名とパスワードを半角コロン記号「:」で区切る。
但し、パスワードはハッシュ化する。→ Password Hash Generator

※.htpasswd ファイルは、サーバの公開領域に設置しない。レンタルサーバなどで不可であれば、.htaccess で見れないようにする。

※.htpasswd ファイルのパーミッションは、604 にする。

※.htpasswd のパスワードがハッシュ化されていても、ネットワーク上の通信はほぼ平文で流れるため盗聴に備えて SSL 化は必須。

※特定のアクセスに対しては、認証なしでアクセス出来るのようにするには、「リモートIP/ホストによるアクセス制限」を追記する。

SSLRequireSSL AuthType Basic AuthUserFile /YOUR-DIRECTORY(FULL PATH)/.htpasswd AuthName "Input your ID and Password." Require valid-user Require ip xxx.xxx.xxx.xxx

※<RequireAll|Any|None> のディレクティブが省略されているので RequireAny として動作する。


コメントアウト

#コメントアウト

行の途中でのコメントは避ける


- guitar site WAVE -