2014-06-08 5 views
0

http://domain.comhttps://www.domain.com으로 리디렉션하고 싶습니다. 나는 (default-ssl.conf 파일)이 같은 httpshttp 리디렉션에 성공 :www가 아닌 ​​http 리디렉션 www 도메인 https 연결

<VirtualHost domain.com:80> 
    RewriteEngine on 
    ReWriteCond %{SERVER_PORT} !^443$ 
    RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
</VirtualHost> 

<VirtualHost _default_:443> 
    RewriteEngine on 
    ServerAdmin [email protected] 
    ServerName domain.com:443 
    ServerAlias www.domain.com 
    DocumentRoot /var/www/html 
</VirtualHost> 

을하지만 www없이 내 도메인을 입력 할 때, 나는 웹에 많은 제안 된 솔루션을 시도 This site is untrusted, the certificate is only valid to <www.domain.com>

오류 메시지가 있지만, 그것은 작동하지 않았다. 내 환경 :

  • 우분투 14.04
  • 아파치
  • < "www.domain.com"> (일반 이름) 발행 SSL
+0

내가 왜 투표를했는지 모르겠지만 어쨌든 고마워. – Engineeroholic

+0

나는 downvote를하지 않았지만, 아마도 이것에 대한 기존의 대답에 대해 충분히 열심히 보지 않았으므로 이것은 downvoted라고 생각한다. "www가 아닌 ​​www 인증서 리디렉션"(또는 심지어 Google)에 대해이 사이트 (페이지의 오른쪽 상단)를 검색하면 매우 유사한 질문 (정확히 일치하지 않는 경우)이 많이 발견됩니다. 첫 번째 결과] (http://stackoverflow.com/a/10726167/372643)에는 정확한 복제본이 아니지만이 인증서 오류 메시지가 표시되는 이유를 정확하게 설명하는 답변이 있습니다. – Bruno

+0

그것은 완전히 괜찮은 친구입니다 :)하지만 지난 3 일간의 답변을 검색해 보았습니다. 여기서 찾은 답변 만이 효과가있었습니다. 그것은 미래에 다른 사람을 도울 것입니다. 누가 알겠습니까! 답장을 보내 주셔서 감사합니다. – Engineeroholic

답변

1

변경 http (포트 80) 설정 :

<VirtualHost domain.com:80> 
    RewriteEngine on 
    ReWriteCond %{SERVER_PORT} !^443$ 
    RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
</VirtualHost> 

여기에,263,210와 www는 :

<VirtualHost domain.com:80> 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^(www\.)(.+) [OR] 
    RewriteCond %{HTTPS} off 
    RewriteCond %{HTTP_HOST} ^(www\.)?(.+) 
    RewriteRule^https://%2%{REQUEST_URI} [R=301,L] 
</VirtualHost> 

초기 연결이 잘못된 인증서 호스트 이름이 될 것이기 때문에 여전히 This site is untrusted, the certificate is only valid to <www.domain.com>를 얻을 수 있습니다, 말했다. 그래서 다음과 같이 -adjusted configs- httphttps 모두이 작업을 수행하는 것이 좋습니다 수 있습니다 :이되는 아이디어는 http 연결에 당신은 단순히 https로 리디렉션

<VirtualHost domain.com:80> 
    RewriteEngine on 
    ReWriteCond %{SERVER_PORT} !^443$ 
    RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L] 
</VirtualHost> 

<VirtualHost _default_:443> 
    ServerAdmin [email protected] 
    ServerName domain.com:443 
    ServerAlias www.domain.com 
    DocumentRoot /var/www/html 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} !^(www\.)?(.+) 
    RewriteRule^https://%2%{REQUEST_URI} [R=301,L] 
</VirtualHost> 

. 그런 다음 https 연결에서 www이 &으로 설정되어 있는지 확인합니다.

+0

불행히도 그것은 작동하지 않았다. 이제 www가 아닌 ​​www로 리디렉션됩니다. 을 (https://domain.com)으로 리디렉션하더라도 마찬가지입니다. 아마도 규칙을 역으로 적용하면 작동 할 것입니다 (죄송합니다. 조건 규칙을 역산하는 방법을 모르겠다. XD 코딩에 익숙하지 않다.) 감사합니다. – Engineeroholic

+0

되었습니다. 작동합니다! 방금 '!'을 추가했습니다. 전에^www ... 대단히 고맙습니다! 단 한가지 버그가 남아 있습니다 : "www"=없이 https : // domain .com을 입력하면 신뢰할 수없는 링크 경고가 나타납니다. 그 사건에 대한 해결책은 없나요? 감사합니다 – Engineeroholic

+1

@Engineeroholic "입력 할 때 ; 그것은 신뢰할 수없는 링크 경고를 제공합니다. "https : // domain.com"에 대한 연결이 항상 https : // www.domain.com과 일치하지 않는 인증서를로드하기 때문에 그렇게 생각하지 않습니다. 1 초도 걸리지 만 경고가 표시 될 수 있도록 연결해야합니다.나는 대답 할 때 "내가 말했을 때, 너는 여전히 ..."라고 말할 때 – JakeGould

관련 문제