.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

  1. シンボリックリンクを許可/CGIの実行を許可/SSIの使用を許可します
  2. 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>

  1. GETとPOSTに対して制限をかけます
  2. allow命令/deny命令の順番に評価させます
  3. すべてのホストのアクセスを許可する
  4. .zzz.or.jpからの、リクエストを禁止します
  5. 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>

  1. パスワードファイル名を設定(相対パスでは無く、絶対パスで記述してください)
  2. グループアクセス制限は行わない
  3. 認証機構の種別の設定(Basic固定)
  4. getとpostに対して制限をかけます
  5. testとユーザーに対してのみアクセスを許可します
  6. ...以下は、特定のプロバイダからの制限と同一です

使用方法:

  • 制限を行いたいディレクトリーに「.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アクセス向上

雑学

広告