0

私の Web サイトは外部認証サービスを使用しています。このサービスは、ユーザーを目的のページから遠ざけ、ログインを実行してからリダイレクトします。

問題は、ユーザーが https ページからリダイレクトされると、認証サービス (私は変更できません) が愚かにも http:// にリダイレクトし、URL の末尾に :443 が追加され、Apache からエラーがスローされることです。

ユーザーが常に https で現在のページを表示していることを確認するための htaccess ディレクティブが既にあります。

RewriteEngine on
RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

私が探しているのは、http で始まり :443 で終わる URL を検出し、ポートを追加せずに https:// にリダイレクトする書き換えルールです。

私はこれを試しました:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]

しかし、それはうまくいかないようです。

4

1 に答える 1

0

.htaccess コードを次のコードに置き換えます。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On

RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

このルールは、http 要求で使用されているポートに関係なく、すべての http トラフィックを https にリダイレクトします。

于 2013-07-29T13:37:41.320 に答える