10

私はめちゃくちゃ単純な問題であるべきものに髪を引っ張っています。F5 BigIP を介して WebSphere IHS (Apache) を実行しています。BigIP が https 変換を行っています。私たちの URL (Web 用に変更、無効) はhttps://superniftyserver.com/lawson/portalです。

誰かがポータルの後にスラッシュを付けずにそれを入力すると、Apache は「ポータル」がディレクトリではなくファイルであると見なします。Apache はそれが何であるかを見つけると、301 Permanent Redirect を送信します。しかし、Apache は http しか認識していないため、URL をhttp://superniftyserver.com/lawson/portal/として送信すると、問題が発生します。

そこで、mod_rewrite のサーバー レベルの httpd.conf の変更を試みました。これは、私が試した数十の組み合わせの 1 つです。

RewriteRule の RewriteEngine ^/lawson/portal(.*) /lawson/portal/$1

RewriteRule も試してみました ^/lawson/portal$ /lawson/portal/

他の多くのものの中でも...何が欠けていますか?

4

4 に答える 4

6

RewriteRule 構文で答えが得られない場合は、他に 2 つのオプションがあります。301 応答を探して SSL に変換するカスタム iRule を BigIp で作成します ( F5 DevCentral を参照)。URL を WebSphere サーバーに渡し、HTTPS を送信するプログラムによるリダイレクトを行います。ただし、F5 は SSL 接続を終了するため、構成するカスタム ヘッダーを設定する必要があります ( PQ86347を参照)。これにより、Java request.getScheme() が期待どおりに機能します。

于 2008-10-01T18:02:30.197 に答える
5

修理済み!

SOL6912: HTTP サーバーからのリダイレクトで HTTPS プロトコルが指定されるように URL を書き換える HTTP プロファイルの構成


更新: 2007 年 8 月 7 日 12:00 AM

ClientSSL 仮想サーバーは通常、クライアントからの HTTPS 接続を受け入れ、SSL セッションを復号化し、暗号化されていない HTTP 要求を Web サーバーに送信するように構成されます。

要求された URI に末尾のスラッシュ (URI の末尾にある / などのスラッシュ) が含まれていない場合、一部の Web サーバーは特別なリダイレクトを生成します。末尾にスラッシュがない場合、Web サーバーは最初に URI で指定されたリソースをファイルとして扱います。ファイルが見つからない場合、Web サーバーは同じ名前のディレクトリを検索し、見つかった場合は、末尾にスラッシュを付けて HTTP 302 リダイレクト応答をクライアントに送信します。リダイレクトは HTTPS ではなく HTTP モードでクライアントに返されるため、SSL セッションが失敗します。

以下は、HTTP 302 リダイレクト応答によって SSL セッションが失敗する例です。

· SSL セッションを要求するには、ユーザーはhttps://www.f5.com/stuffを末尾のスラッシュなしで入力します。

· クライアント ブラウザは、BIG-IP LTM システム上に存在する ClientSSL 仮想サーバーに SSL 要求を送信します。

· 次に、BIG-IP LTM システムはリクエストを復号化し、GET /stuff コマンドを Web サーバーに送信します。

· /stuff ファイルは Web サーバー上に存在しませんが、/stuff/ 仮想ディレクトリは存在するため、Web サーバーはディレクトリに対して HTTP 302 リダイレクト応答を送信しますが、リソースに末尾のスラッシュを追加します。Web サーバーが HTTP 302 リダイレクト応答を送信する場合、HTTP を指定します (HTTPS ではありません)。

· クライアントが HTTP 302 リダイレクト応答を受信すると、(HTTPS ではなく) HTTP を指定する新しい要求を BIG-IP LTM 仮想サーバーに送信します。その結果、SSL 接続は失敗します。

URL を書き換えるための HTTP プロファイルの構成

BIG-IP LTM バージョン 9.x では、HTTP サーバーからのリダイレクトで HTTPS プロトコルが指定されるように、HTTP プロファイルを構成して URL を書き換えることができます。これを行うには、次の手順を実行します。

  1. 構成ユーティリティにログインします。

  2. [ローカル トラフィック] をクリックします。

  3. [プロファイル] をクリックします。

  4. [作成] ボタンをクリックします。

  5. プロファイルの名前を入力します。

  6. [親プロファイル] ドロップダウン メニューから [http] を選択します。

  7. [設定] で、構成に応じて [リダイレクトの書き換え] を [すべて]、[一致]、または [ノード] に設定します。

例えば:

o すべてを選択して、HTTP 301、302、303、305、または 307 リダイレクトを HTTPS に書き換えます。

o 要求とリダイレクトのパスとクエリ URI コンポーネントが同一である場合 (末尾のスラッシュを除く)、リダイレクトを書き換えるには [マッチング] を選択します。

o リダイレクト URI にホスト名ではなくノード IP アドレスが含まれており、システムにそれを仮想サーバー アドレスに変更させたい場合は、[ノード] を選択してリダイレクトを書き換えます。

  1. [完了] をクリックします。

ここで、新しい HTTP プロファイルを ClientSSL 仮想サーバーに関連付ける必要があります。

于 2008-10-01T20:13:06.683 に答える
2

これを試して:

# Trailing slash problem
RewriteCond    %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule    ^(.+[^/])$           https://<t:sitename/>$1/ [redirect,last]
于 2010-12-17T18:40:20.490 に答える
0
LoadModule rewrite_module                modules/mod_rewrite.so

その行が httpd.conf ファイルのどこかにあることを確認してください

于 2008-10-01T18:02:07.373 に答える