2

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

RewriteRule http://%{SERVER_NAME}/openid/index.php(\?.+)$ https://%{SERVER_NAME}/openid/index.php$1
4

2 に答える 2

2

ポート (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
于 2008-09-26T03:54:07.167 に答える
0

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

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

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

于 2009-01-13T13:39:22.303 に答える