|
|
|
|

|
|
|
|
作者 kiyoeri
|
|
2009/02/12 木曜日 09:34:02 JST |
Apache .htaccess
Apacheの難解な .htaccessをまとめたサイトが見つかった。 http://w3g.jp/others/htaccess/outline 自分なりにまとめておく。
①Webサーバーの動作設定の反映順位 ・設定は上位(httpd.conf)から下位(.htaccess)に向けて上書きして反映される。 ・アクセス制限は上位が優先され、解除するには下位の.htaccessで指定を行う。
httpd.conf ┬→ .htaccess ┬→ .htaccess │ └→ .htaccess └→ .htaccess |
②アクセスの禁止と許可 1.特定の参照元の禁止 [http://www.hoge.com からのリソース参照を禁止する。]
SetEnvIf Referer "^http://www\.hoge\.com" ref_ng order allow,deny allow from all deny from env=ref_ng |
2.特定の参照元の許可 [http://www.hoge.com からのリソース参照を許可する。]
SetEnvIf Referer "^http://www\.hoge\.com" ref_ok SetEnvIf Referer "^$" ref_ok order deny,allow deny from all allow from env=ref_ok |
3.特定ホストのアクセスを禁止 [ URI のxxx.or.jp や IPアドレスの、 255.255.255.0 123.456. アクセスを禁止する。]
order allow,deny allow from all deny from xxx.or.jp deny from 255.255.255.0 deny from 123.456. |
4.特定ホストのアクセスを許可 [ URI のxxx.or.jp や IPアドレスの、 255.255.255.0 123.456. アクセスを許可する。]
order deny,allow deny from all allow from xxx.or.jp allow from 255.255.255.0 allow from 123.456. |
③Basic認証
AuthType Basic (Basic認証を指定) AuthUserFile /virtual/equation/public_html/sample/.htpasswd ( ↑ .htpasswdを認証に使用) AuthGroupFile /dev/null (ユーザー認証のためのグループファイルを指定) AuthName "Enter password" (認証のための開始メッセージ) Require valid-user (ユーザ単位の認証、グループ単位はvalid-group) | ※ .htpasswdの隠蔽方法 1..htpasswd を、WWW サーバのドキュメントツリー(~/public_html/) 下に置かない。 2.<Files> を使って .htpasswd ファイルの閲覧を拒否させる記述を書く。 <Files ~ "^.htpasswd$"> deny from all </Files> 3..htpasswd ファイルを CGIスクリプトとして扱うように設定して、ファイルの中身を 参照することができないようする AddHandler cgi-script htpasswd ※.htpasswdではない(ドットなし)
④MIMEタイプ・文字コードの指定 1.拡張子に対するMIMEタイプの追加指定
AddType image/png png AddType image/gif gif AddType image/jpeg jpg jpeg |
2.文字コードの指定
AddType "text/xml; charset=utf-8" xml rdf AddType "text/html; charset=utf-8" html htm AddType "text/plain; charset=Shift_JIS" txt |
3.SSIやPHPを拡張子に関わらず使用できるようにする。
AddType text/x-server-parsed-html shtml html (.shtmlまたは.htmlでSSIを使用可能にする。) AddType application/x-httpd-php php html (.phpまたは.htmlでphpを使用可能にする。) |
4.DefaultType/ForceTypeディレクティブ(未知のファイルに対して)
[/public_html .htaccess] DefaultType "text/html; charset=utf-8" [/public_html/style .htaccess] DefaultType "text/css; charset=Shift_JIS" [/public_html/gif .htaccess] ForceType image/gif [/public_html/png .htaccess] ForceType image/png
|
※DefaultType:拡張子がファイル名に含まれていない未知のファイルのみに働きかける。 ※ForceType :そのディレクトリおよびサブディレクトリにあるファイルの MIMEタイプを 統一して提供するように働きかける。 ※要注意!
⑤ディレクトリ制御 1.デフォルトファイルの設定 [/で終わるURIにアクセスする時、top.htmlが最初に呼ばれる。]
[/で終わるURIにアクセスする時、最初左の記述から優先的にファイルを探していく。]
| DirectoryIndex index.html index.htm index.shtml index.cgi index.php |
2.ディレクトリ表示を禁止する。 (指定ファイルがない場合のファイルのインデックス表示を禁止する。)
⑥キャッシュ制御 1.キャッシュしないようにする。(頻繁に更新されるリソースに適用する。)
<Files ~ "\.(html|php|jpe?g|gif|png)$"> (対象ファイル) Header set Pragma no-cache (HTTP/1.0用) Header set Cache-Control no-cache (HTTP/1.1用) </Files> |
⑦HTTPリダイレクト 1.クライアントプル
| <meta http-equiv="refresh" content="10;url=http://w3g.jp/new/"> | 文書を読み込んでから何秒後に指定のURLにジャンプさせるかを指定する。
2.HTTPリダイレクト 「old」というディレクトリ以下のファイルにアクセスがあった場合に、自動的に「new」 というディレクトリ以下にある同じファイル名をもつファイルへと HTTPリダイレクトさせる。 permanentオプションで、そのリソースが恒久的に別の場所へ移動したことを伝える。 注意) 転送先と転送元のディレクトリ名が被ることのないように注意(永久ループする。)
3.正規表現を使用したHTTPリダイレクト ファイル名はそのままで拡張子だけを変えて移動先のリソースを要求することも可能
| RedirectMatch permanent (.*)post(.*)¥.php$ http://w3g.jp/new/ | URI に"post" という文字列を含み、拡張子が ".php" であるファイルへとアクセスが あった場合に http://w3g.jp/new/ 以下へと HTTPリダイレクトを行う。
4.HTTPリダイレクトのオプション
| オプション | 説明 | | Redirect | どのステータスを返すかのオプション部分を省略した表記。デフォルトの Redirectディレクティブに tempオプションを指定した場合と同じ 302 Moved Temporarilyステータスコードを返す。オプションをつける場合は permanent, temp, seeother, gone の4つがある。 | | Redirect permanent | 301 Moved Permanentlyステータスコードを返す。要求されたリソースが、永久(恒久的)に別の場所へ移動したことを伝え、今後はそちらをリクエスト(要求)するように UA へ促す。 | | Redirect temp | Redirectディレクティブの初期値。302 Moved Temporarilyステータスコードを返す。要求されたリソースが、一時的に指定の場所へ移動していることを UA に伝える。 | | Redirect seeother | 303 See Otherステータスコードを返す。要求されたリソースが他の別のリソースで置き換えられたことを UA に伝える。 | | Redirect gone | 410 Goneステータスコードを返す。要求されたリソースが永久に削除されたことを UA に伝える。goneオプションの場合は、値に URI を記述してはいけない(記述する必要がない)。 | | RedirectPermanent | Redirectディレクティブの permanentオプションを指定した場合と同じ、301 Moved Permanentlyステータスコードを返す。要求されたリソースが、永久(恒久的)に別の場所へ移動したことを伝え、今後はそちらへリクエストするよう UA に促す。 | | RedirectTemp | Redirectディレクティブ、または Redirectディレクティブの tempオプションを指定した場合と同じ、302 Moved Temporarilyステータスコードを返す。要求されたリソースが、一時的に指定の場所へ移動していることを UA に伝える。 |
|
|
最終更新日 ( 2009/02/12 木曜日 12:02:52 JST )
|
|