.htaccessとは
.htaccess(ドット・エイチ・ティ・アクセス)とは、Apacheなどのソフトウェアが使用されている環境で使用可能なディレクトリ単位のWebサーバー設定ファイルです。
これが特定のディレクトリに設置されると、「.htaccess」内に記述されている内容が、設置されたディレクトリ内とその下層のディレクトリ内に対して適用されます。
.htaccessを利用するとき
.htaccess ファイルは、ディレクトリ毎の設定をしたいが、サーバシステムの root アクセス権限を持っていないという場合に限定した方が良いと思います。
例えば、レンタルサーバーなどで自分専用にWEBサーバーの設定を変えたい場合は、.htaccess ファイルを格納することで、WEBサーバの設定変更(一部)を行うことができます。
.htaccessファイルの役割
ベーシック認証
ディレクトリなどに認証を付けてID/パスワードの入力を強制する仕組みのことです。
主な用途としては、ID、パスワードを知っている人にだけ、配下のページを公開したいときに利用します。
こちらを設定するには、「.htpasswd」というファイルも必要になります。
「.htaccess」の設定例
1 2 3 4 5 |
AuthUserfile /フルパス/.htpasswd AuthGroupfile /dev/null AuthName "Please enter your ID and password" AuthType Basic require valid-user |
上記の、「AuthUserfile」に記述しているパスに、「.htpasswd」を配置します。
「.htpasswd」の設定例
1 |
id:password |
idはそのまま記載しますが、passwordの箇所は暗号化する必要があります。
また、1アカウント=1行なので、複数アカウント作りたい場合は、複数行に指定します。
301リダイレクト
SEOで最も利用される転送方法で、旧ページから新ページへ評価を継承できるものです。
恒久的な移転と呼ばれ、URLの変更やドメインの移転の際に利用します。
サイトを移設した時や、ページのURLを変更した時などに必要となる仕組みで、ユーザーに新しいサイトへ誘導(転送)するのが、主な役割となります。
設定例
http://hogehoge.com/old.html ページから http://hogehoge.com/new.html へ301リダイレクトを行う場合
1 2 |
RewriteEngine on RewriteRule ^old.html$ http://hogehoge.com/new.html [R=301,L] |
URLの正規化
URLの正規化とは、URLを1つに統一することです。
例えば、下記のように異なるURLでも、同じページが表示されます。
1 2 3 |
http://hogehoge.com/ http://hogehoge.com/index.html http://www.hogehoge.com/ |
設定例
index.html有り無しの統一(index.html無しに統一する場合)
1 2 3 |
RewriteEngine on RewriteCond %{THE_REQUEST} ^.*/index.html RewriteRule ^(.*)index.html$ http://hogehoge.com/$1 [R=301,L] |
設定例
www有り無しの統一(www無しに統一する場合)
1 2 3 |
RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.hogehoge\.com$ RewriteRule ^(.*)$ http://hogehoge.com/$1 [R=301,L] |
ディレクトリ内のファイル一覧表示の中止
http://www.hogehoge.com/ のように「 /(スラッシュ)」 で終わるアクセスがあったときに、そのディレクトリ内の「index.html」が代替して呼ばれます。
しかし、index.htmlファイルが見つからなかった場合に、ディレクトリ内のファイル一覧が表示されてしまいます。
このようにディレクトリを公開することは、Webサイトの構造を公開することになり、セキュリティの観点から見ると一定のリスクがあります。
これを防止するために、ディレクトリ内のファイル一覧表示を中止することで、ディレクトリ構造の公開を防ぐことができます。
設定例
.htaccess
1 |
Options -Indexes |
特定のIPアドレスやドメインからのアクセス制限
特定のIPアドレスやドメインからのアクセスを制限・拒否することが出来ます。
また、逆に特定のIPアドレスやドメインからのアクセスのみ許可することも出来ます。
下記IPアドレスとドメインに対して指定をする場合の例を示します。
IPアドレス:192.168.1.1
ドメイン:hogehoge.com
アクセスを制限したい場合
1 2 3 4 |
order allow,deny allow from all deny from hogehoge.com deny from 192.168.1.1 |
アクセスを許可したい場合
1 2 3 4 |
order deny,allow deny from all allow from hogehoge.com allow from 192.168.1.1 |
また、test.htmlというファイル単体に対して指定したい場合は、下記のように設定します。
1 2 3 4 |
order deny,allow deny from all allow from hogehoge.com allow from 192.168.1.1 |