質問
めちゃくちゃ単純な問題になるはずの髪の毛を引っ張っています。 F5 BigIPを介してWebSphere IHS(Apache)を実行しています。 BigIPはhttpsの翻訳を行っています。 URL(Web用に変更され、有効ではありません)は https://superniftyserver.com/lawson/portal です。
誰かがポータルの後にスラッシュなしでそれだけを入力すると、Apacheは" portal"を想定します。ディレクトリではなくファイルであること。 Apacheは、それが何であるかを見つけると、301 Permanent Redirectを送信します。しかし、Apacheはhttpのみを知っているため、 http://superniftyserver.com/lawson/portal/としてURLを送信します。 a>これにより問題が発生します。
だから、mod_rewriteのサーバーレベルhttpd.confの変更を試みました。これは、私が試した数十の組み合わせの1つです。
RewriteEngine on RewriteRule ^ / lawson / portal(。*)/ lawson / portal / $ 1
私も試しました RewriteRule ^ / lawson / portal $ / lawson / portal /
他の多くのことの中で...何が欠けていますか?
解決
RewriteRule構文に関する回答が得られない場合、他に2つのオプションがあります。BigIpでカスタムiRuleを作成します( F5 DevCentral )は、301応答を探してSSLに変換します。 URLをWebSphereサーバーに渡し、HTTPSを送信するプログラムによるリダイレクトを実行します。ただし、F5はSSL接続を終了するため、構成するカスタムヘッダーを設定する必要があります( PQ86347 ))ので、Java request.getScheme()は期待どおりに動作します。
他のヒント
修正済み>
SOL6912:HTTPサーバーからのリダイレクトがHTTPSプロトコルを指定するようにURLを書き換えるようにHTTPプロファイルを設定
更新:8/7/07 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 と入力します。末尾のスラッシュ。
·クライアントブラウザーは、SSLリクエストをClientSSL仮想サーバーに送信します。これは、BIG-IP LTMシステム上にあります。
·次に、BIG-IP LTMシステムはリクエストを解読し、GET / stuffコマンドをWebサーバーに送信します。
· / stuffファイルはWebサーバー上に存在せず、/ stuff /仮想ディレクトリが存在するため、Webサーバーはディレクトリに対してHTTP 302リダイレクト応答を送信しますが、リソースに末尾のスラッシュを追加します。 WebサーバーがHTTP 302リダイレクト応答を送信するとき、HTTP(HTTPSではない)を指定します。
·クライアントは、HTTP 302リダイレクト応答を受信すると、HTTP(HTTPSではない)を指定するBIG-IP LTM仮想サーバーに新しい要求を送信します。その結果、SSL接続は失敗します。
URLを書き換えるためのHTTPプロファイルの構成
BIG-IP LTMバージョン9.xでは、HTTPサーバーからのリダイレクトがHTTPSプロトコルを指定するようにURLを書き換えるようにHTTPプロファイルを構成できます。これを行うには、次の手順を実行します。
-
構成ユーティリティにログインします。
-
「ローカルトラフィック」をクリックします。
-
「プロファイル」をクリックします。
-
「作成」ボタンをクリックします。
-
プロファイルの名前を入力します。
-
「親プロファイル」ドロップダウンメニューからhttpを選択します。
-
[設定]で、構成に応じて[リダイレクトリライト]を[すべて]、[一致]、または[ノード]に設定します
例:
oすべてを選択して、HTTP 301、302、303、305、または307のリダイレクトをHTTPSに書き換えます
o要求とリダイレクトのパスおよびクエリURIコンポーネントが同一の場合にリダイレクトを書き換えるには、一致を選択します(末尾のスラッシュを除く)
oリダイレクトURIにホスト名ではなくノードIPアドレスが含まれる場合、リダイレクトを書き換えるノードを選択し、システムが仮想サーバーアドレスに変更するようにしたい
- 「完了」をクリックします。
新しいHTTPプロファイルをClientSSL仮想サーバーに関連付ける必要があります。
これを試してください:
# Trailing slash problem
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
RewriteRule ^(.+[^/])$ https://<t:sitename/>$1/ [redirect,last]
LoadModule rewrite_module modules/mod_rewrite.so
その行がhttpd.confファイルのどこかにあることを確認してください