リクエスト変換

概要

x-Servletは端末からのリクエストを必要に応じて変換させ、Webサーバへリクエストを送信することが出来ます。
リクエスト変換を利用することにより、元コンテンツの取得先やリダイレクト先を指定することが出来ます。

x-Servletはコンテンツルールで設定されたルールに則り、Webサーバへのリクエストを変換します。
また複数のルールを設定することにより、元コンテンツ取得先の振り分けをすることが可能です。

コンテンツルールの設定方法については、コンテンツルールコンテンツルールのモードをご覧ください。

設定例

設定はcontentsRule.xmlで行ないます。

例1)Webサーバの設定を変えずにドメインを変更したい時
contentsRule.xml

<ContentsRule>
  <ConditionHost>x-servlet.co.jp</ConditionHost>
  <Host>x-servlet.com</Host>
  <Port>80</Port>
  <DefaultEncoding>Shift_JIS</DefaultEncoding>
</ContentsRule>

この場合は下記のようなリクエスト変換が行なわれます。
   x-servlet.co.jp -> x-servlet.com:80

例えば
   http://x-servlet.co.jp
というリクエストが端末から来た場合は
  http://x-servlet.com:80
をWebサーバから取得します。

例2)アクセスを他のディレクトリに振り分けたい時
contentsRule.xml

<ContentsRule>
  <ConditionDir>/test</ConditionDir>
  <Host>x-servlet.com</Host>
  <Port>80</Port>
  <PreDir>/other</PreDir>
  <DefaultEncoding>Shift_JIS</DefaultEncoding>
</ContentsRule>

この場合は下記のようなリクエスト変換が行なわれます。
   *:*/test -> x-servlet.com:80/other

例えば
   http://x-servlet.com/test/index.html
というリクエストが端末から来た場合は
   http://x-servlet.com:80/other/index.html
をWebサーバから取得します。

例3)リダイレクトさせたい時
contentsRule.xml

<RedirectRule>
  <ConditionFile>index.html</ConditionFile>
  <Host>x-servlet.com</Host>
  <Port>80</Port>
  <File>login.html</File>
</RedirectRule>

この場合は下記のようなリクエスト変換が行なわれます。
   *:*/**/index.html -> x-servlet.com:80/**/login.html

例えば
   http://x-servlet.co.jp/index.html
というリクエストが端末から来た場合は
   http://x-servlet.com:80/login.html
へリダイレクトされます。

注意点

  • クエリストリングのデリミタについて [Version2.6.1以上]
    x-Servlet Version2.6.1 からクエリストリングのデリミタが「?」の場合は「&」に統一するよう変更されました。
    元のリンク記述

    <a href="page1.html?name1=value1?name2=value2?name3=value3">

    x-Servletへのリクエスト

    GET page1.html?name1=value1?name2=value2?name3=value3&_xpxi=xxxxxx... HTTP/1.1

    Ver2.5.0 以下のWebサーバへのリクエスト結果

    GET page1.html?name1=value1?name2=value2?name3=value3 HTTP/1.0

    Ver2.6.1 以上のWebサーバへのリクエスト結果

    GET page1.html?name1=value1&name2=value2&name3=value3 HTTP/1.0

    このため"?"をデリミタではなくデータの一部としてリクエストさせたい場合は"%3F"にURLエンコードしたリンクを記述してください。

    元のリンク記述

    <a href="page1.html?name1=value1%3Fname2=value2%3Fname3=value3">

    x-Servletへのリクエスト

    GET page1.html?name1=value1%3Fname2=value2%3Fname3=value3&_xpxi=xxxxxx... HTTP/1.1

    Webサーバへのリクエスト結果

    GET page1.html?name1=value1%3Fname2=value2%3Fname3=value3 HTTP/1.0

TOP