誰でもこのような条件でhttp < - > https(戻って強制します)をリダイレクトすることができますか? :htaccess rewriterule:入力したURLに応じてhttpをhttpsまたはhttpsにhttp(両方向)にリダイレクト
1)http://www.mydomain.com , http://www.mydomain.com/?p=home , http://www.mydomain.com/?p=home1 , http://www.mydomain.com/?qqq=home
は、httpの代わりにhttpsが入力されていても常にhttpです。
2)httpsの代わりにhttpが入力された場合でも、残りのすべてのページは常にhttpsです。
以下のコードは、http://www.mydomain.comを除くすべてのURLをhttpsにリダイレクトします(およびパラメータを保持します)。すべてのページが常にhttpsをしているように、私はwww.mydomain.comを除き、(何parametresが存在しない場合)だけでなくhttpにHTTPSをリダイレクトするために、上記のコードの後に右下のコードを追加しようとしました
#redirects http to https if there are parameters
RewriteCond %{HTTPS} off
RewriteCond %{QUERY_STRING} !^$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
しかし、私は運がなかった。また、私は逃した?p = home、?p = home1、?qqq = home - 私はそれらを追加する方法を知らない。
RewriteCond %{HTTP} off
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}
うわー...らしいです。人々は私の質問に1年足らずで答えることができますか?:)もう1つの質問です: "home1?"を説明してください。最後の記号( "1")が無効になっている "home1"または "home1"を意味しますか?ありがとうございました。そして2番目の質問:[E = IS_HTTP:1]または[ENV = IS_HTTP:1]?ありがとうございました。 – Haradzieniec
@Haradzieniec 'home1?'は 'home'または' home1'にマッチします。つまり '? 'は' 1'をオプションにします。 'E'または' env'が動作します。 –
ありがとうございました。それは動作しますが、私はそれがこのトピックのための質問ではなく、別のものではないかどうかはわかりません...あなたのコードでは、httpsが赤で、クロムにクロスアウトされ、同様のエラーがFFで発生します。コードを削除すると、すべてが問題なく、SSL証明書が正常に表示されます。緑です。それは、コードの最初と3番目のブロックでうまく動作します(しかし、2番目のブロックはなく、 "RewriteCond%{HTTPS} on"で始まります)。理由は何でしょうか?どうもありがとうございました。 – Haradzieniec