2

特定の URI を探す書き換えルールがあります。特定の URL と一致すると、必要なコンテンツが見つかるように、適切なファイル パスでそれを書き換えます。次に、プロトコルを HTTPS に変更し、リクエストが通過できるようにします。

2 つの問題があります。

  1. 書き換えられたパスをユーザーのブラウザに表示したくない - バニティ URL を維持したい
  2. 安全な接続を介してサイトにアクセスしていることをユーザーに示すHTTPSプロトコルを表示したい.

いくつかのオプションを試しましたが、成功しませんでした。[R] フラグを含めると、URL とプロトコルは変更されませんが、それは望ましい効果ではありません

これを達成する方法について何か提案はありますか?

これが私のルールです。

RewriteMap redirectsIfSecure txt:/myserver/content/secure_urls.txt
RewriteCond ${lowercase:%{REQUEST_URI}} ^/(.+)$
RewriteCond ${redirectsIfSecure:%1|NOT_FOUND} !NOT_FOUND
RewriteRule ^(.*)$ https://myserver.com${redirectsIfSecure:%1} [PT]
4

1 に答える 1

3

mod_rewrite ドキュメントから:

絶対 URL が指定されている場合はmod_rewrite、ホスト名が現在のホストと一致するかどうかを確認します。存在する場合、スキームとホスト名は取り除かれ、結果のパスは URL パスとして扱われます。それ以外の場合、指定された URL に対して外部リダイレクトが実行されます。外部リダイレクトを現在のホストに強制的に戻すには、以下の [R] フラグを参照してください。

に一致しない完全修飾 URL (つまりhttp://、 、 などで始まるもの) にリクエストを書き換えると、はHTTP リダイレクトを発行し、クライアント ブラウザは新しい場所からリソースをリクエストします。https://ServerNamemod_rewrite

http と https を切り替えようとしていない場合は、プロキシ ルール (Pフラグ) を使用して、Apache がクライアントに代わってリクエストを行い、結果を返すようにして、書き換えられた URL をマスクすることができます。

ただし、http から https に (またはその逆に) アップグレードしようとしている場合は、常にクライアント リダイレクトが必要になります。

于 2012-04-26T19:44:18.023 に答える