.htaccessの使い方
注意:ファイル名は、「.htaccess」になります。はじめの「.」(ピリオド)は必ず必要ですので間違わないようにしてください。
アクセス制限
アクセス制限・ベーシック認証はこちらへ
ディレクトリのファイル一覧表示を中止する
通常、スラッシュ(/)で終わるアクセスがあったときに、index.html ファイルが代替して呼ばれますが、index.html ファイルが見つからない場合に、次のようなディレクトリのファイル一覧が表示されます。これは、Apache の機能です。次の設定は、インデクス表示を禁止する .htaccess の設定です。
Options -Indexes
この設定にしておくと、スラッシュ(/)で終わるアクセスがあったときに、index.html ファイルがない場合、403 Forbidden を返します。
index.html 以外をデフォルトファイルにする
通常、スラッシュ(/)で終わるアクセスがあったときは、index.htmlファイルが代替して呼ばれますが、DirectoryIndex を設定することで index.html 以外のファイルを呼び出すことができます。
DirectoryIndex index.cgi index.html index.shtml top.htm
スラッシュ(/)で終わるアクセスがあったとき、サーバは DirectoryIndex で記述されているファイルを順に探していき、見つかればそのファイルを表示します。
.htaccess 自体を隠す方法
.htaccess ファイルはその性質上、世界中のユーザが閲覧可能なドキュメントツリー(~/public_html/) 下に設置しなければなりませんが、.htaccessは高度な設定を記述するため、.htaccessファイル自体が閲覧されるとセキュリティが低下します。
.htaccess ファイルを設置したならば、まずは手持ちの WWW ブラウザで .htaccess が閲覧できるか確認しましょう。もし不幸にも見えてしまったなら、.htaccess ファイルに次の1行を加えましょう(*)。
AddHandler cgi-script htaccess
これで、手軽に.htaccessファイル自体の閲覧を拒否できます。
リダイレクト
ホームページを運営していると、ディレクトリー構造の変更などでどうしても、ファイルの移転が必要なケースが出てきます。また、今まではプロバイダの無料スペースに置いていたのをドメインを取得し、レンタルサーバで運営することになったとします。かと言って、旧URLには検索エンジン経由などで多くのアクセスがあり、このまま閉鎖してしまうのはもったいないというケースもあるでしょう。
このような場合、通常、メタタグを用いて、
<META HTTP-EQUIV="refresh" content="2;URL=http://web.okanos.com/newpage.html">
などとします。
この例で言えば、「2秒後にhttp://www.example.com/newpage.html」、にリダイレクトされることになります。多くの場合、これで十分なのですが、この方式だと、考えうる全てのHTMLファイルに対して、このメタタグを放り込んでやらなければならず、ファイルが多いと非常に面倒になります。
このようなケースでは、.htaccessを使ったリダイレクトで、よりスマートな解法があります。.htaccessでは、ディレクトリー構造そのままにリダイレクトさせることも可能です。
Redirect permanent /test/ http://web.okanos.com/htaccess/
自作のエラーページを作る
インターネットで「ページが見つかりません」に出くわす例は非常に多いです。しかし、このブラウザが吐き出すエラーメッセージはブラウザによって違うとはいうものの、どれも味気ないものばかりです。また、せっかくアクセスしてくれたユーザーを逃してしまうことになります.
そこで自分で作成したエラーページを表示するようにします。
ErrorDocument 404 http://web.okanos.com/err/404.html
「404」とは、ステータスコードと呼ばれるもので、ブラウザなどであるページにアクセスすると、サーバが返す3桁の数字です。
エラーメッセージを書き換えたい詳細はこちらで
---------------------------------------------------------------------
標準的な.htaccessファイル
---------------------------------------------------------------------
Options FollowSymLinks ExecCGI Includes
AddType application/x-httpd-cgi.cgi
- シンボリックリンクを許可/CGIの実行を許可/SSIの使用を許可します
- cgiのmimetypeの追加
特定のホストのアクセスを制限
次の例は、特定のホストからのアクセスを拒否する .htaccess の設定例です。このように書かれた .htaccess を編集し、アクセス制限したいディレクトリに置いてください。そのディレクトリ以下すべてのリソースは、指定されたホストからの要求に対して 403 forbbidden を返してアクセスを拒否します。
# アクセス制限
order allow,deny
allow from all
deny from ppp01.aaa.ne.jp # ppp01.aaa.ne.jp を拒否
deny from .bbb.co.jp # ???.bbb.co.jp を拒否
deny from .go.jp # 当局によるアクセスを拒否
deny from 130.90. # 130.90.???.??? を拒否
---------------------------------------------------------------------
特定のプロバイダからのアクセスを禁止する
---------------------------------------------------------------------
<Limit GET>
order allow,deny
allow from all
deny from .abc.com
</Limit>
- GETとPOSTに対して制限をかけます
- allow命令/deny命令の順番に評価させます
- すべてのホストのアクセスを許可する
- .zzz.or.jpからの、リクエストを禁止します
- 123.123.xx.xxのIPアドレスからの、リクエストを禁止します
---------------------------------------------------------------------
パスワードを使用してのアクセス制限をする
---------------------------------------------------------------------
AuthUserFile /home/user/www/passwd/.htpasswd
AuthGroupFile /dev/null
AuthType Basic
AuthName ACCESS PROTECT
<limit GET POST>
require user test
order allow,deny
allow from all
deny from .zzz.or.jp
</limit>
- パスワードファイル名を設定(相対パスでは無く、絶対パスで記述してください)
- グループアクセス制限は行わない
- 認証機構の種別の設定(Basic固定)
- getとpostに対して制限をかけます
- testとユーザーに対してのみアクセスを許可します
- ...以下は、特定のプロバイダからの制限と同一です
使用方法:
- 制限を行いたいディレクトリーに「.htaccess」ファイルを作成します
- パスワードファイル(この例では、/home/user/www/passwd/.htpasswdに作成)を作成します。
作成には、htpasswd を使用します、プロバイダに用意されているとおもいますので、確認してみてください。
Syntax:htpasswd [-c] filename user-name
-cオプションは、パスワードファイルを新規に作成するときに指定します。/home/user/www/passwd/に移動して、htpasswd -c .htpasswd testを実行します。
パスワードが、問い合わせられるので、設定したいパスワードを入力してください。
これで、「.htpasswd」が作成されます。
ユーザーを追加するには、htpasswd .htpasswd new-userで追加します。
Webサイトを持とう
SEOアクセス向上
雑学
広告
