質問

マシンの1つでphpMyIDをセットアップし、パスワードが送信されている場合にのみApacheをHTTPSにリダイレクトしようとしています。すべてのopenidトラフィックをリダイレクトする元のセットアップが機能しなかったため、これを行っています。stackoverflowは自己署名証明書を好みません。これは私が書いた新しいルールですが、機能していません:

RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
役に立ちましたか?

解決

ポート(httpまたはhttpd)とクエリ文字列の両方をテストするには、Condを使用する必要があります。

RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule /openid/index.php https://%{SERVER_NAME}/openid/index.php?%1

.htaccessの場合、代わりに使用する必要があります

RewriteCond %{SERVER_PORT} 80
RewriteCond %{QUERY_STRING} (.+)
RewriteRule openid/index.php https://%{SERVER_NAME}/openid/index.php?%1

他のヒント

より良い解決策は次のとおりです。

    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^openid/index\.php$ https://%{SERVER_NAME}/openid/index.php

説明: RewriteCond%{SERVER_PORT} 80 は、 80 のみを含むポートにも一致します。同じことがパターン openid / index.php にも当てはまります(“ ”には任意の文字を使用できます)。また、代替のクエリが指定されない限り、mod_rewriteは最初に要求されたクエリを代替に自動的に追加するため、クエリを追加する必要はありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top