0

このような質問をたくさん見つけて、ほとんどすべて試しましたが失敗しました。私の最新のコードは次のとおりです。

RewriteCond %{HTTPS} !^on$
RewriteCond %{REQUEST_URI} (/page_1|/page_2|/page_3|/page_3)$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L]

これらのページ (page_1 - page_4) のみ http を https にリダイレクトしたい

最初はうまくいったようですが、 httpsでpage_1 に到達し、 https であってはならない他のリンク ( page_my_http_1 など) をクリックすると、そのページ ( page_my_http_1 ) のhttpsにもリダイレクトされます。

私も試しました:

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} (auth|register|secure)
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !(auth|register|secure)
RewriteRule ^(.*)$ http://%{SERVER_NAME}%{REQUEST_URI} [R=301]  

または、ブラウザで SSL 証明書がアクティブ化されていない場合に、ユーザーにカスタム メッセージを表示する方法はありますか?

実際、多くの技術者以外のユーザーは、ブラウザーがデフォルトの警告メッセージを表示するとショックを受けます。

4

1 に答える 1

0

あなたの例を少しだけ変更しましたが、基本的にはうまくいきます

RewriteEngine on

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(?:auth|register|secure)$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R]

RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^/(?:auth|register|secure)$
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R]

^$およびを追加しました。/そうしないと、nosecureまたはのようなリクエストauthorityが HTTPS にもリダイレクトされるためです。

有効にしてテストしないでください。詳細について301は、この回答.htaccess 書き換えルールをデバッグするためのヒント を参照してください。

于 2013-03-07T13:38:57.077 に答える