Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Apache

...

Wiki MarkupApache サーバーでは、書き換えディレクティブを使用して URL 操作を行う強力な方法が提供されます。

詳細は、Apache HTTP サーバー・バーション 2.4 の「&<a href=" target="_blank"&>http>http://httpd.apache.org/docs/2.4/mod/mod_rewrite.html"Apache モジュール mod_rewrite&</a&>」を参照してください。

以下の例は、これらの書き換えディレクティブの使用方法を示しています。

...

1

書き換えURL:"/myservice.jsp?request=xml&service=neworder" "/cgi-bin/jsmdirect?neworder"

サンプル URL: http://10.2.0.170:1099/myservice.jsp?request=xml&service=neworder

URL にサービス名と値のペアが含まれる場合、/cgi-bin/jsmdirect?<値> が呼び出されます。それ以外の場合は、/cgi-bin/jsmdirect?default が呼び出されます。

RewriteCond

...

%

...

{QUERY_STRING

...

}

...

service

...

=(

...

[^

...

&

...

]+)

...


RewriteRule

...

^/myservice.jsp(.*)

...

/cgi-bin/jsmdirect?%1

...

[L,PT

...

]

...


RewriteRule

...

^/myservice.jsp(.*)

...

/cgi-bin/jsmdirect?default

...

[L,PT

...

]

...


 

RewriteCond は、service= QUERY_STRING をチェックして、& 以外の値をすべてパラメータ化します。

条件が真の場合、次の RewriteRule を実行します。真でなければこのルールはスキップされ、他のルールが実行されます。          注:を実行します。真でなければこのルールはスキップされ、他のルールが実行されます。

Info

注:

  • RewriteRule ディレクティブでクエリー文字列は使用できません。 クエリー文字列は、mod_rewriteがディレクトリごとのコンテキストで有効になるまでにquery_string環境変数に移動しています。
  • RewriteCondは、その後の最初のRewriteRuleにのみ有効です。 以降のRewriteRuleには適用されないため、%1の後方参照は、2番目、3番目、以降のRewriteRuleに対して未定義になります。

...

...

2

書き換えURL:" /myservice.jsp?type=2&msgid=AXD&status=NEW" "/cgi-bin/jsmdirect?myservice+type(2)msgid(AXD)+status(NEW)"


RewriteRule

...

^/myservice.jsp

...

/myservice.jsp/%

...

{QUERY_STRING

...

}

...

[C

...

]

...


RewriteRule

...

^/myservice.jsp/type=(

...

[

...

&

...

]+)&msgid=(

...

[

...

&

...

]+)&status=(

...

[

...

&

...

]+)

...

¥
   /cgi-bin/jsmdirect?myservice+type($1)+msgid($2)+status($3)

...

[L,PT

...

]

...

 

...

...

3

書き換えURL:"/parts/00345" "/cgi-bin/jsmdirect?orderbind+id(00345)"

サンプル URL: http://10.2.0.170:1099/parts/00345

RewriteRule

...

^/parts/(.*)

...

/cgi-bin/jsmdirect?orderbind+id($1)

...

[L,PT

...

]

...


 

...

...

4

書き換えURL:"/parts/00345/abc" "/cgi-bin/jsmdirect?orderbind+id(00345)+item(abc)"

サンプル URL: http://10.2.0.170:1099/parts/00345/abc

RewriteRule

...

^/parts/(.*)/(.*)

...

/cgi-bin/jsmdirect?orderbind+id($1)+item($2)

...

[L,PT

...

]

...


 

...

Apache

...

構成ファイルのサンプル

# Apache 構成 - JSM サービス
Options None

...

Listen 10.2.0.170:1099
ServerRoot /www/jsmapache
DocumentRoot /www/jsmapache/htdocs

...

# DefaultFsCCSID  37

...

# DefaultNetCCSID 819
# ServerUserID USERPROFILE
#
LogLevel Warn
LogCycle Daily
ErrorLog logs/error_log
CustomLog logs/access_log combined

...

LogFormat "%{User-agent}i" agent

...

LogFormat "%{Referer}i -> %U" referer

...

LogFormat "%{Cookie}n \"%r\" %t" cookie

...

LogFormat "%h %l %u %t \"%r\" %>s %b" common

...

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#

...

# StartCGI 1

...

# SendBufferSize 32768

...

# ReceiveBufferSize 32768
#

...

# 名前ベースの仮想ホスティングを使用
NameVirtualHost 10.2.0.170

...


#
<VirtualHost 10.2.0.

...

170>
  # 最初の仮想ホストのディレクティブがデフォルトのホスト
  # これにより、サポートされない、またはホスト名がない IP アドレスの使用を防ぐ
  # ドキュメントのルート・ディレクトリにアクセス権なし
  Options None
  ServerName 10.2.0.170

...


  DocumentRoot

...

/www/jsmapache/htdocs

...


</VirtualHost>

...


#
<VirtualHost 10.2.0.

...

170>
  Options None
  ServerName SERVER1
  ServerAlias SERVER1.ACME.COM.AU

...


  DocumentRoot

...

/www/jsmapache/htdocs-site1

...


  CGIConvMode

...

BINARY

...


  ErrorDocument 403 /noaccess.html

...


  ErrorDocument 404 /notfound.html

...


  ScriptAliasMatch

...

^/cgi-bin/jsmproxy(.*)

...

/qsys.lib/devjsm.lib/jsmproxy.

...

pgm$1
  ScriptAliasMatch ^/cgi-bin/jsmdirect(.*)

...

/qsys.lib/devjsm.lib/jsmdirect.

...

pgm$1
  ScriptAliasMatch ^/cgi-sec/jsmdirect(.*)

...

/qsys.lib/secure.lib/jsmdirect.

...

pgm$1
  TimeOut 3000
  #
  RewriteEngine On
  # RewriteLog rewrite-site1.log

...


  # RewriteLogLevel 9
  #
  RewriteCond %{REQUEST_METHOD

...

}

...

^TRACE

...


  RewriteRule

...

.*

...

-

...

[L,F

...

]

...


  #
  RewriteRule ^/parts/(.*)/(.*)

...

/cgi-sec/jsmdirect?orderbind+id(

...

$1)+item(

...

$2)

...

[L,PT

...

]

...


  RewriteRule

...

^/parts/(.*)

...

/cgi-bin/jsmdirect?orderbind+id(

...

$1)

...

[L,PT

...

]

...


  RewriteRule

...

^/parts

...

/cgi-bin/jsmdirect?orderbind+id(*NONE)

...

[L,PT

...

]

...


  #
  RewriteCond %{QUERY_STRING

...

}

...

service\=(

...

[^\&

...

]+)

...


  RewriteRule

...

^/myservice(.*)

...

/cgi-bin/jsmdirect?

...

%1 [L,PT

...

]

...


  RewriteRule

...

^/myservice(.*)

...

/cgi-bin/jsmdirect?default

...

 [L,PT

...

]

...


  #
  RewriteCond %{TIME_HOUR

...

}%

...

{TIME_MIN

...

} >0905
  RewriteCond %{TIME_HOUR

...

}%

...

{TIME_MIN

...

} <1900
  RewriteRule ^/mypage.html

...

/day.html

...

[L

...

]

...


  RewriteRule

...

^/mypage.html

...

/night.html

...

[L

...

]

...


  #
  # RewriteCond %{TIME_HOUR

...

}%

...

{TIME_MIN

...

} <1300 [OR

...

]

...


  #

...

RewriteCond

...

%

...

{TIME_HOUR

...

}%

...

{TIME_MIN

...

} >1500
  # RewriteRule ^/cgi-bin/jsmdirect(.*)

...

/noaccess.html

...

[L

...

]

...


  #
  # RewriteMap companymap txt:/www/jsmapache/company.map

...


  #

...

RewriteRule

...

^/company/(.*)

...

$

...

{companymap:

...

$1|http://nocompany.com

...

}

...

[L,R

...

]

...


  #
  # RewriteMap hostmap rnd:/www/jsmapache/randomhost.map

...


  #

...

RewriteRule

...

^/(.*\.(pdf|gif|jpg))

...

http://$

...

{hostmap:static

...

}/$1

...

[L,R

...

]

...


  #
  <Directory /www/jsmapache/htdocs-site1>

...


    Options

...

None

...


    Order

...

Allow,Deny

...


    Allow

...

from

...

all

...


    AllowOverride

...

None

...


  </Directory>

...


  #
  <Directory /qsys.lib/devjsm.lib>

...


    Options

...

None

...


    Order

...

Allow,Deny

...


    Allow

...

from

...

all

...


    AllowOverride

...

None

...


    #

...

有効なユーザーが必須

...


    # 認証タイプ Basic
    # 認証名"Restricted Service"
    # ユーザーID QTMHHTP1
    # パスワード・ファイル %%SYSTEM%%
  </Directory>
  #
  <Directory /qsys.lib/secure.lib>

...


    Options

...

None

...


    Order

...

Allow,Deny

...


    Allow

...

from

...

all

...


    AllowOverride

...

None

...


    Require

...

valid-user

...


    AuthType

...

Basic
    AuthName "Restricted

...

Service"

...


    # ユーザーID QTMHHTP1
    PasswdFile %%SYSTEM%%
  </Directory>

...


</VirtualHost>

...


#
<VirtualHost 10.2.0.

...

170>
  Options None
  ServerName STUDIOADMIN
  DocumentRoot /www/jsmapache/htdocs-site2

...


  CGIConvMode

...

BINARY

...


  ScriptAliasMatch

...

^/cgi-bin/jsmadmin(.*)

...

/qsys.lib/devjsm.lib/jsmadmin.

...

pgm$1
  #
  <Directory /www/jsmapache/htdocs-site2>

...


    Options

...

None

...


    Order

...

Allow,Deny

...


    Allow

...

from

...

all

...


    AllowOverride

...

None

...


  </Directory>

...


  #
  <Directory /qsys.lib/devjsm.lib>

...


    Options

...

None

...


    Order

...

Allow,Deny

...


    Allow from 10.2.1.46

...


    Allow from 10.2.1.47

...


    Allow from 10.2.1.48

...


    AllowOverride

...

None

...


  </Directory>

...


</VirtualHost>

...


#
# グローバル・サーバー・ディレクティブ
#
<Directory />

...

  Options None

...

  Order Allow,Deny

...

  Deny from all

...

  AllowOverride None
</Directory>
#
<Directory /www/jsmapache/htdocs>

...

  Options None

...

  Order Allow,Deny

...

  Deny from all

...

  AllowOverride None
</Directory>

...