2008-09-26 7 views
2

내 컴퓨터에서 phpMyID를 설정했는데 암호를 제출할 때만 HTTPS로 리디렉션하도록 아파치를 얻으려고합니다. 모든 openid 트래픽을 리다이렉트하는 원래 설정으로 stackoverflow가 자체 서명 된 인증서를 좋아하지 않는다는 이유로이 작업을 수행하고 있습니다. 이것은 내가 작성한 새 규칙이지만, 작동하지 않는 그 :비밀번호를 입력 할 때만 Apache 리디렉션

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

경우 :

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

답변

2

당신은 모두 포트 (http 또는 아파치)와 쿼리 문자열을 테스트하기 위해 COND를 사용할 필요가 htaccess로에 대신

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

스택 오버플로를 인증 할 때 쿼리 문자열을 사용하여 자체로 리디렉션되므로 실제로 phpMyID를 얻지는 않습니다. 이것은 좋은 출발이다. –

0

를 사용해야 더 나은 솔루션은 다음과 같습니다

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

설명 : RewriteCond %{SERVER_PORT} 8080이 포함 된 포트와 일치합니다. openid/index.php 패턴에도 적용됩니다 (여기서 "."은 모든 문자 일 수 있음). 그리고 mod_rewrite는 대용 물의 질의가 주어지지 않으면 원래 요청한 질의를 대용 물에 자동으로 추가하기 때문에 질의를 추가 할 필요가 없다.

관련 문제