ファイルやURL関連の設定、5回目
前回は特定のディレクトリごとに基本設定を行った。今回は特定のファイルやURLに対して設定を行ってみよう。
Apacheには各ディレクトリに .htaccess という設定ファイルを配置することで、そのディレクトリ以下の設定ファイルを変更できるようになっている。
ファイルを指定する
<Files security.html> Order allow deny allow 192.168.1.0/24 deny all </Files>
これで security.html にアクセスできるのは 192.168.1.0/24 だけとなった。
URLを設定する
ファイルやディレクトリと同様にして、URLに対しても
<Location /project> Options ExecCGI SymLinksIfOwnerMatch Order allow deny allow 10.0.0.0/16 deny all </Location>
こうすればドキュメントルート上にある projectディレクトリでリンク先の参照とCGIの実行を許可し、10.0.0.0/16以外からのアクセスを拒否できる。
正規表現でのファイルの記述情報
正規表現 | 意味 |
---|---|
. | 改行文字以外の任意の1文字 |
* | 直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でもかまわない |
^ | 行の先頭 |
$ | 行の末尾 |
[] | かっこ内の任意の1文字に一致。"-"で範囲指定もできる |
[^] | かっこ内の任意の1文字に不一致。"-"で範囲指定もできる |
pattern1|pattern2 | pattern1またはpattern2のいずれかに一致 |
\ | 正規表現に使われる記号を普通の文字として扱う |
このときは
正規表現を用いる場合 |
---|
.htaccess で設定を上書きする
ソースからApacheをインストールした場合、/usr/local/apache2/conf/httpd.conf を変更できるのは root =そのマシンの管理者。コンテンツを別の人が管理している場合、設定変更を root に依頼するのは面倒。かといってコンテンツを管理している人にも root 権限を渡すのはどうかと思う。
そこで役立つのが .htaccsss ファイル。あるディレクトリに .htaccess をおいておくと、そのディレクトリにアクセスがきたときには .htaccess が読み込まれる。
.htaccess を有効にする
不用意に .htaccess を有効にしておくのは危険。そこで Apache の初期設定では .htaccess ファイルを利用できないようにしてある。
<FileMatch "\.ht"> Order allow, deny Deny from all </FileMatch> ↑これを↓こうする。 #<FileMatch "\.ht"> # Order allow, deny # Deny from all #</FileMatch>
そして、Allow Override を使って .htaccess で可能な設定を許可しておけばいい。例えば .htaccess でアクセス制限を行うには、
AllowOverride Limit
としておく。Limit 以外に複数の機能を列挙したい場合は空白で区切って項目を並べておく。
項目 | 内容 | 変更可能な項目 |
---|---|---|
AuthConfig | 認証に関連する設定を許可する | AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthAme, AuthType, AuthUserFile, require |
FileInfo | ファイルや言語、MIMEなどに関する設定を許可する | AddType, AddEnconfig, AddLanguage, AddCharset, AddHandler, RemoveHandler, LanguagePriority, ErrorDocument, DefauultType, Action , Redirect, RedirectMatch, RedirectTemp, RedirectParmanent, PassEnv, SetEnv, UnsetEnv, Header, RewriteEnconfig, RewriteOptions, RewriteBase, RewriteCond, RewriteRule, cookieTracking, Cookiename |
Indexes | インデックスの設定を許可する | FancyIndexing, AddIcon, AddDescription |
Limit | アクセス制限の設定を許可する | Order, Deny, Allow |
Options | Optionsの機能設定を許可する。書式は「Options=機能,機能…」 | Options |
All | すべての設定を許可する | 上記すべての設定項目 |
None | すべての設定を不許可にする | なし |
1つ注意することは「Options=」で項目を列挙する場合、カンマで区切るが、カンマの前後にスペースを入れてはいけない。
Options項目の上書き
Apacheではディレクトリの設定はサブディレクトリにも継承される。例えば親ディレクトリにIndexesとSymLinksIfOwnerMatchが設定されている場合、サブディクトリではCGIを実行させたいので .htaccess ファイルに「Options ExecCGI」と設定すると、ExecCGIは有効になるが親ディレクトリで設定していたIndexesとSymLinksIfOwnerMatchが無効になってしまう。そこでOptionsの項目を設定する場合は「+」を付加する。
Options +ExecCGI
文字化けへの対処
Fedra Core のパッケージを指定している場合、/etc/httpd/conf/httpd.conf ファイルにデフォルトで文字コードを指定しているので、文字化けが起こってしまう。これは httpd.conf ファイルで指定した文字コードとhtmlファイルの文字コードが異なっている場合に起こる。
AddDefaultCharset UTF-8 ↑これを↓こうする # AddDefaultCharset UTF-8
htmlファイルのヘッダー部分に次のように記述していても、この問題は発生するのである。
<meta httpd-equiv="content-type" content="text/html; charset=EUC-JP">
これでよし。