.htaccess

リンク

ブロック(設定範囲の限定)

  • 基本
    特に明示していなければ.htaccessの置かれているディレクトリと、
    その下層ディレクトリに対して影響を及ぼす。
    [public_html]
    ├.htaccess
    ├index.html
    └[cgi-bin]
      ├bbs.cgi
      └bbs.log
  • 影響するファイルを指定する
    • index.htmlに対してのみ影響を及ぼす設定
      <Files index.html>
      #この範囲の設定は index.htmlにのみ有効
      </Files>
  • 影響するファイル拡張子を指定する
    <Files ~ "\.(txt|log)$">
    #この範囲の設定は *.txt と *.log のファイルにのみ有効
    </Files>

    <FileMatch "\.(txt|log)$">
    #この範囲の設定は *.txt と *.log のファイルにのみ有効
    </Files>
  • 影響するファイル正規表現を指定する

エラードキュメント指定

  • エラーコードに対応してエラー表示するページを指定
    ErrorDocument 401 /error/401.html

コメント文

# 行の先頭が#なら行末までがコメント文となり処理から無視される
order deny,allow
deny from all
allow .jp .com

アクセス制限

  • 基本
    • order
      アクセスの許可、拒否を行う順番を指定する。
      許可 allow、拒否 deny
      order で指定した順に評価される
      # allow が優先
      order allow,deny
      deny from all
      allow from .com
      上の「jpドメインだけ許可したい」と思って書いた書式は
      orderの指定上、allow が先に評価されてしまうため
      1. .jpドメインのアクセス許可
      2.全てのアクセスを拒否
      という順番になり、結果「全アクセスが禁止」になってしまう。
      「deny from 〜〜」「allow from 〜〜」は書かれた順に評価されるわけではない

      order allow,deny
      #まず、全てのアクセスを許可
      allow from all
      #.comドメインからのアクセスを拒否
      deny from .com

      order deny,allow
      #まず、全てのアクセスを拒否
      deny from all
      #.jp(日本)ドメインからのアクセスを許可
      allow from .jp
  • 特定ホスト(.me.jp .us.com)のみを許可
    order deny,allow
    deny from all
    allow from .me.jp .us.com
  • 特定ホスト(.you.jp .them.org)を拒否
    order allow,deny
    allow from all
    deny from .you.jp .them.org
  • 特定の参照元をアクセス制限
    環境変数 Referer(phpなどで使う HTTP_REFERER)に指定したホストが含まれていればアクセスを許可する
    # 環境変数 Referer が http://myhost\.com にマッチすれば env に ref_ok をセットする。
    SetEnvIf Referer "^http://myhost\.com" ref_ok
    order deny,allow
    deny from all
    # env が ref_ok と同じならアクセスを許可する
    allow from env=ref_ok
    これだけだとURL直打ち(リファラなし)でもアクセス不能なので
    下のようにリファラが空でも許可させることもできる。
    # 環境変数 Referer が http://myhost\.com にマッチすれば env に ref_ok をセットする。
    SetEnvIf Referer "^http://myhost\.com" ref_ok
    SetEnvIf Referer "^$" ref_ok
    order deny,allow
    deny from all
    # env が ref_ok と同じならアクセスを許可する
    allow from env=ref_ok
  • httpd.conf に
    AccessFileName .htaccess
    AllowOverride FileInfo
    の二行が含まれている必要があるらしい。

認証

全員に認証を設定。パスワードを入力できる者だけアクセスを許可する。
このファイル内で指定してある /home/user/UserID/.htpasswd にパスワードファイルを置いておく必要がある。

# .htaccess
# アクセス設定
AuthUserFile /home/user/UserID/.htpasswd
AuthGroupFile /dev/null
AuthName "Enter password"
AuthType Basic

require valid-user
  • .htpasswdファイルの中身の例。IDと暗号化されたパスワードのリストが入っている。
    このファイルはURLなどを打ち込んで見える場所(/public_html以下など)に置くべきではない。
    # /home/user/UserID/.htpasswd
    # パスワード設定
    name1:01234ABCD
    name2:56789EFGH

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規新規下位 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-17 (水) 19:46:50 (3293d)