httpd.conf はApache HTTP Serverの設定ファイルです。
| モジュール | ディレクティブ | 説明 |
|---|---|---|
| core | AllowOverride | httpd.confの設定を.htaccessで上書きできるかどうかを設定する。 |
| Directory | 指定したディレクトリ及びそのサブディレクトリにのみ適用されるディレクティブを囲む。 | |
| DocumentRoot | ドキュメントルートを設定する。 | |
| Files | マッチするファイル名にのみ適用されるディレクティブを囲む。 | |
| IfModule | 指定したモジュールが存在するときにのみ適用されるディレクティブを囲む。 | |
| Options | ディレクトリに対して、使用可能な機能を設定する。 | |
| mod_access_compat | Allow | アクセスできるホストを制御する。 |
| Deny | アクセスを拒否するホストを制御する。 | |
| Order | AllディレクティブとDenyディレクティブが評価される順番を制御する。 | |
| mod_headers | Header | HTTP応答ヘッダを設定する。 |
| mod_setenvif | SetEnvIf | リクエストの属性に基づいて環境変数を定義する。 |
| mod_rewrite | RewriteCond | URL書き換えルールを適用する条件を定義する。 |
| RewriteEngine | URL書き換えエンジンを有効又は無効に設定する。 | |
| RewriteRule | URL書き換えルールを定義する。 |
Options { All | [FollowSymLinks] [Indexes] [MultiView] }
FollowSymLinksオプションを指定すると、サーバがこのディレクトリ内でシンボリックリンクを辿れるようになる。
Indexes オプションを指定すると、URLがディレクトリにマップするリクエストであり、DirectoryIndex で指定したファイルがディレクトリ内に無ければ、ディレクトリ内の一覧を表示する。
All オプションを指定すると、MultiView を除くすべてのオプションを指定したことになる。
オプションのデフォルトは All である。
Allowディレクティブはアクセスできるホストを制御する。
Allow from all|host|env=[!]variable [host|env=[!]variable] ...
allを指定した場合、すべてのホストからのアクセスを許可する。
hostにはアクセスを許可するホストのドメイン名又はIPアドレスを指定する。ドメイン名やIPアドレスは一部だけ指定することもできる。
すべてのホストからのアクセスを許可するにはallを指定する。
Allow from all
アクセスできるホストを制限する例を示す。
Allow from itref.fc2web.com
Allow from fc2web.com
Allow from 192.168.1.2
Allow from 192.168
env=variableを指定した場合、variableに指定した環境変数が定義されているときにアクセスを許可する。
Allow from env=foo
env=!variableを指定した場合、variableに指定した環境変数が未定義のときにアクセスを許可する。
Allow from env=!foo
Denyディレクティブは、アクセスを拒否するホストを制御する。
Deny from all|host|env=[!]variable [host|env=[!]variable] ...
Orderディレクティブは、AllディレクティブとDenyディレクティブが評価される順番を制御する。
Order ordering
| 値 | 説明 |
|---|---|
| Allow,Deny | まずAllowが評価され、次にDenyが評価される。カンマの前後に空白を含めることはできない。 |
| Deny,Allow | まずDenyが評価され、次にAllowが評価される。カンマの前後に空白を含めることはできない。 |
Order Deny,Allow
SetEnvIfディレクティブは、リクエストの属性に基づいて環境変数を定義する。
SetEnvIf attribute regexp variable[=value]
attributeに指定した属性の値がregexpにマッチした場合、variableに指定した環境変数にvalueで指定した値が設定される。
attribute にはリクエストの属性を指定する。
| 属性 | 説明 |
|---|---|
| Host | HTTPリクエストヘッダのHostフィールド |
| User-Agent | HTTPリクエストヘッダのUser-Agentフィールド |
| Referer | HTTPリクエストヘッダのRefererフィールド |
| Remote_Host | クライアントのホスト名 |
| Remote_Addr | クライアントのIPアドレス |
| Request_Method | メソッド名(GETやPOSTなど) |
| Request_Protocol | プロトコルの名前とバージョン("HTTP/1.1"など) |
| Request_URI | URLのスキームとホストの後の部分 |
| Cookie | Cookieの値 |
regexpには、リクエストの属性値を正規表現で指定する。
variableには、環境変数を名前を指定する。
valueには、環境変数に設定する値を指定する。valueの指定を省略した場合、環境変数の値には"1"が設定される。
クッキーfooの値がbarであれば、環境変数cookie_okを定義するサンプルを示す。
SetEnvIf Cookie "foo=bar" cookie_ok
クッキーfooの値が定義されていれば、環境変数cookie_okを定義するサンプルを示す。
SetEnvIf Cookie "foo=" cookie_ok
モジュールが存在するときに処理されるディレクティブを指定する。または、モジュールが存在しないときに処理されるディレクティブを指定する。
<IfModule [!]module-file|module-id>
[directive ...]
</IfModule>
RewriteRuleディレクティブによるURL書き換えを行うには、mode_rewriteモジュールを有効にする必要がある。mod_rewriteモジュールを有効にするには、confディレクトリにあるhttpd.confファイルを編集して、次の行を追加する。
LoadModule rewrite_module modules/mod_rewrite.so
ApacheのRewriteCondディレクティブは、URL書き換えルールを適用する条件を定義する。
RewriteCond test [!]pattern [flags]
| 対象 | 説明 |
|---|---|
| %{HTTP_COOKIE} | クッキー |
| %{HTTP_HOST} | サーバのホスト名 |
| %{HTTP_REFERER} | 参照元URL |
| %{HTTP_USER_AGENT} | ユーザエージェント |
| フラグ | 説明 |
|---|---|
| nocase | 大文字と小文字を区別せずにパターンと一致するかどうかをテストする。 |
| NC | |
| ornext | RewriteCondが複数ある場合、いずれかの条件にあてはまる場合にRewriteRuleを適用する。 ORを指定しない場合はAND条件となる。 |
| OR |
画像の直リンクを禁止するサンプルを示す。
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !itref.fc2web.com [NC]
RewriteRule \.(gif|jpg|png)$ - [F,NC]
ApacheのRewriteEngineディレクティブは、URL書き換えエンジンを有効又は無効に設定する。
RewriteEngine on|off
ApacheのRewriteRuleディレクティブは、URL書き換えルールを定義する。
RewriteRule pattern substitution [flags]
| フラグ | 説明 |
|---|---|
| last | 書き換え処理を即座に停止して、これ以上ルールを適用しない。 |
| L |
Header set header value