第 3 章 環境設定
3.14 リライト機能の設定
リライト機能は、Rewrite関連のディレクティブを使用して、URLを書き換える条件および書換えのルールを正規表現で設 定します。本設定により、書換え条件やルールを満たしている場合にURLを書き換えます。
書換え条件やルールに応じた設定例を以下に示します。
・ クライアントのIPアドレスによりURLを書き換える場合
・ リクエストURLの否定条件によりURLを書き換える場合
・ リクエストメソッドの種類によりアクセスを禁止する場合
・ ブラウザの種類により異なるページを表示する場合
・ ServletサービスのアプリケーションのURLをリダイレクトする場合
・ 書き換えたURLをプロキシ要求として動作させる場合
・ 書き換えたURLでCGIを実行させる場合
注意
・ バーチャルホストでは、バーチャルホストごとにリライト機能のディレクティブを設定してください。
・ ServletサービスのアプリケーションのURLに対してリライト機能を設定する場合は、<Location>セクションの中に、リラ イト機能のディレクティブを設定してください。
・ 書き換えたURLがServletサービスのアプリケーションのURLである場合、外部リダイレクトの指定だけが有効となりま す。
■クライアントのIPアドレスによりURLを書き換える場合
例
クライアントのIPアドレスが「192.168.0.」で始まる場合、URLを「/ext」に内部リダイレクトする
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.
RewriteRule ^/(.*)$ /ext/$1
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^192\.168\.0\.
RewriteRule ^/(.*)$ /ext/$1
■リクエストURLの否定条件によりURLを書き換える場合
例
Webブラウザ(クライアント)から先頭文字列が「/somepath」ではないURLが指定された場合、URLを「otherhost」に外部リ ダイレクトする
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/somepath RewriteRule ^/(.*)$ http://otherhost/$1
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/somepath RewriteRule ^/(.*)$ http://otherhost/$1
■リクエストメソッドの種類によりアクセスを禁止する場合
例
HEADメソッドまたはOPTIONSメソッドのリクエストを受け付けた場合、ステータスコード「403」(Forbidden)で応答する
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|OPTIONS)$
RewriteRule .* - [F]
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^(HEAD|OPTIONS)$
RewriteRule .* - [F]
■ブラウザの種類により異なるページを表示する場合
例
アクセスされたWebブラウザの種類により、異なるページを表示する
・ Internet Explorerの場合:ファイル名に「-i」を付加したhtmlページ
・ Internet Explorer以外の場合:ファイル名に「-o」を付加したhtmlページ
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*MSIE.*
RewriteRule ^/(.*)\.html /$1-i.html [L]
RewriteRule ^/(.*)\.html /$1-o.html [L]
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} .*MSIE.*
RewriteRule ^/(.*)\.html /$1-i.html [L]
RewriteRule ^/(.*)\.html /$1-o.html [L]
■ServletサービスのアプリケーションのURLをリダイレクトする場合
例
Webブラウザ(クライアント)からServletサービスのアプリケーション識別子「sample1」のURLが指定された場合、URLを
「sample2」に外部リダイレクトする
注)RewriteRuleディレクティブで評価されるURLは、<Location>セクションで指定したURL「/sample1/」を除いた部分にな
ります。
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
<Location /sample1/>
RewriteEngine On
RewriteRule ^(.*)$ /sample2/$1 [R]
</Location>
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
<Location /sample1/>
RewriteEngine On
RewriteRule ^(.*)$ /sample2/$1 [R]
</Location>
■書き換えたURLをプロキシ要求として動作させる場合
例
Webブラウザ(クライアント)から先頭文字列が「/info/」のURLが指定された場合、プロキシ要求とみなし、「originhost」に リクエストを転送する
注)URLが「/info」の場合は、URLを「/info/」に書き換えた後、プロキシ動作を実行します。「https」は、転送するリクエスト
に指定できません。
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
LoadModule proxy_module "C:/Interstage/F3FMahs/modules/mod_proxy.so"
LoadModule proxy_http_module "C:/Interstage/F3FMahs/modules/mod_proxy_http.so"
RewriteEngine On
RewriteRule ^/info$ /info/
RewriteRule ^/info/(.*)$ http://originhost/info/$1 [P]
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
LoadModule proxy_module "/opt/FJSVahs/modules/mod_proxy.so"
LoadModule proxy_http_module "/opt/FJSVahs/modules/mod_proxy_http.so"
RewriteEngine On
RewriteRule ^/info$ /info/
RewriteRule ^/info/(.*)$ http://originhost/info/$1 [P]
■書き換えたURLでCGIを実行させる場合
例
Webブラウザ(クライアント)からファイル名の拡張子「cgi」のURLが指定された場合、/cgi-bin配下のCGIを実行する
LoadModule cgi_module "C:/Interstage/F3FMahs/modules/mod_cgi.so"
LoadModule rewrite_module "C:/Interstage/F3FMahs/modules/mod_rewrite.so"
ScriptAlias /cgi-bin/ "C:/Interstage/F3FMahs/cgi-bin/"
RewriteEngine On
RewriteRule ^/(.+\.cgi)$ /cgi-bin/$1 [PT]
LoadModule cgid_module "/opt/FJSVahs/modules/mod_cgid.so"
LoadModule rewrite_module "/opt/FJSVahs/modules/mod_rewrite.so"
ScriptAlias /cgi-bin/ "/opt/FJSVahs/cgi-bin/"
RewriteEngine On
RewriteRule ^/(.+\.cgi)$ /cgi-bin/$1 [PT]
参考
関連ディレクティブ
・ LoadModule
・ <Location>
・ RewriteCond
・ RewriteEngine
・ RewriteRule
・ ScriptAlias
3.15 サーバステータス監視の設定
ExtendedStatusディレクティブなどを使用して、サーバステータスの監視を設定します。
設定例を以下に示します。
注意
・ 本設定はWebサーバ全体に対して適用されます。バーチャルホストごとに変更することはできません。
・ ネットワーク上の悪意のある人(またはマシン)がそのサーバステータスをのぞき見る脅威があるため、ユーザ認証お よびIPアクセスコントロールを併用して設定することをお勧めします。ユーザ認証の設定については「3.7 ユーザ認証 の設定」を、IPアクセスコントロールの設定については「3.8 IPアクセスコントロールの設定」を参照してください。
例
Webブラウザ(クライアント)でURL「http://192.168.1.1(WebサーバのIPアドレス)/server-status」を指定し、サーバステータ ス情報を表示する場合
LoadModule auth_basic_module "C:/Interstage/F3FMahs/modules/mod_auth_basic.so"
LoadModule authn_file_module "C:/Interstage/F3FMahs/modules/mod_authn_file.so"
LoadModule authz_user_module "C:/Interstage/F3FMahs/modules/mod_authz_user.so"
LoadModule status_module "C:/Interstage/F3FMahs/modules/mod_status.so"
ExtendedStatus On
<Location /server-status>
AuthUserFile "C:/Interstage/F3FMahs/conf/password.txt"
AuthName "Server Status"
AuthType Basic Require valid-user SetHandler server-status Order Deny,Allow Deny from all Allow from 192.168.1.1
</Location>
LoadModule auth_basic_module "/opt/FJSVahs/modules/mod_auth_basic.so"
LoadModule authn_file_module "/opt/FJSVahs/modules/mod_authn_file.so"
LoadModule authz_user_module "/opt/FJSVahs/modules/mod_authz_user.so"
LoadModule status_module "/opt/FJSVahs/modules/mod_status.so"
ExtendedStatus On
<Location /server-status>
AuthUserFile "/opt/FJSVahs/conf/password.txt"
AuthName "Server Status"
AuthType Basic Require valid-user SetHandler server-status Order Deny,Allow Deny from all Allow from 192.168.1.1
</Location>
参考
関連ディレクティブ
・ Allow
・ AuthName
・ AuthType
・ AuthUserFile
・ Deny
・ ExtendedStatus
・ <Location>
・ LoadModule
・ Order
・ Require
・ SetHandler
3.16 コンテンツの圧縮機能の設定
SetEnvIfNoCaseディレクティブやSetOutputFilterディレクティブなどを使用して、圧縮の対象となるコンテンツを指定して 設定します。本設定によりWebブラウザからのリクエストに対して、指定したコンテンツが圧縮されます。
圧縮対象に応じた設定例を以下に示します。
・ 画像以外のコンテンツを圧縮する場合
・ MIMEタイプ「text/html」/「text/plain」のコンテンツを圧縮する場合
・ 「/sample」から始まるURLのコンテンツを圧縮する場合
■画像以外のコンテンツを圧縮する場合
例
LoadModule headers_module "C:/Interstage/F3FMahs/modules/mod_headers.so"
LoadModule deflate_module "C:/Interstage/F3FMahs/modules/mod_deflate.so"
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary
LoadModule headers_module "/opt/FJSVahs/modules/mod_headers.so"
LoadModule deflate_module "/opt/FJSVahs/modules/mod_deflate.so"
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary
■
MIMEタイプ「
text/html」/「
text/plain」のコンテンツを圧縮する場合
例
LoadModule deflate_module "C:/Interstage/F3FMahs/modules/mod_deflate.so"
AddOutputFilterByType DEFLATE text/html text/plain
LoadModule deflate_module "/opt/FJSVahs/modules/mod_deflate.so"
AddOutputFilterByType DEFLATE text/html text/plain
■「/sample」から始まるURLのコンテンツを圧縮する場合
例
LoadModule deflate_module "C:/Interstage/F3FMahs/modules/mod_deflate.so"
<Location /sample>
SetOutputFilter DEFLATE
</Location>
LoadModule deflate_module "/opt/FJSVahs/modules/mod_deflate.so"
<Location /sample>
SetOutputFilter DEFLATE
</Location>
参考
関連ディレクティブ
・ AddOutputFilterByType
・ Header
・ LoadModule
・ <Location>
・ SetEnvIfNoCase
・ SetOutputFilter