このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

Easy バーチャルドメイン (^_^;;

発言者:田中求之
( Date Wednesday, January 29, 1997 22:25:37 )


同じサーバーでありながら、アクセスしたときのホスト名によってページが変わる
バーチャルドメインというのがありますが、これを WebSTAR (QPQ) で実験する
ためのサンプルです。

本格的にバーチャルドメインを実現するには、DNS サーバーなどの設定を行う
必要がありますが、ここではそんな大がかりなものではなく、ホスト名で
アクセスしたときと、IP アドレスでアクセスしたときとで、ページを変える
というものをお見せします。

原理は簡単で、PreProcessor を使って、ブラウザからのリクエストに含まれて
いる Host ヘッダーをチェックし、これが IP アドレスになっていた場合は
リダイレクトをかけます。Host ヘッダーをサポートしているブラウザ( NetScape
2.x 以降、MS Explorer の最近のものもサポートしてるはず)でしか
有効でないという点はご注意ください。

まず以下のスクリプトをコンパイルして、PreProcessor として登録して
ください( vh.acgi という名前にした場合は、 :vh.acgi として登録
します)。

----

property crlf : (ASCII character 13) & (ASCII character 10)

property redirect_header : "HTTP/1.0 302 Found" & crlf ツ
  & "MIME-Version: 1.0" & crlf ツ
  & "Location: "

property yourIP : "" --- サーバーの IP  アドレス


on ヌevent WWWスsdocネ path_args ツ
  given ヌclass scnmネ:script_name, ヌclass Kfrqネ:full_request
  
  set oldDel to AppleScript's text item delimiters
  set AppleScript's text item delimiters to {crlf & crlf}
  set myHeaders to text item 1 of full_request
  set AppleScript's text item delimiters to oldDel
  
  ---
  try
    set myHost to item 1 of (pickUpFromData myHeaders startOf "Host: " endOf return with Trim)
    
    
    if script_name = "/" then
      if myHost is yourIP then
        return redirect_header & "/IP/" & crlf & crlf
      end if
    end if
    return ""
  on error
    return ""
  end try
  
end ヌevent WWWスsdocネ

----

yourIP の部分でサーバーの IP アドレスを指定するのを忘れないでください。

で、サーバーと同じフォルダーに IP という名前のフォルダーを作り、その中に
default.html として、IP アドレスでアクセスした時のページを作っておき
ます。

以上の設定が完了したら、

  http://your.host/

と

 http://192.168.1.1/   (数字はサーバーの IP アドレス)

とでアクセスしてみてください。ページが切り替わるはずです。


このスクリプトをもう少し改良すると、デフォルトページ以外もリダイレクト
できるものも作れます。