ServerAlias로 구성된 여러 하위 도메인에 대해 https로 리디렉션하는 방법은 무엇입니까?

ServerAlias로 구성된 여러 하위 도메인에 대해 https로 리디렉션하는 방법은 무엇입니까?

certbot을 통해 SSL을 설치했으며 내 모든 사이트는 SSL을 통해 액세스할 수 있습니다.

그러나 브라우저 URL에 http가 사용되면 아래에서 첫 번째 URL만 https로 리디렉션됩니다. 다른 것들은 https로 리디렉션되지 않고 계속 http에 있습니다.

  1. mydomain.com
  2. xx.mydomain.com
  3. yy.mydomain.com

포트 80의 경우 virtualhosts 파일의 다시 쓰기 논리 내용은 다음과 같습니다.

RewriteEngine on
RewriteCond %{SERVER_NAME} =mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

포트 443의 경우 가상 호스트의 내용은 다음과 같습니다.

DocumentRoot /var/www/html
ServerName mydomain.com
Include /etc/letsencrypt/options-ssl-apache.conf
ServerAlias xx.mydomain.com
ServerAlias yy.mydomain.com
SSLCertificateFile /etc/letsencrypt/live/yy.mydomain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/yy.mydomain.com/privkey.pem

보시다시피 도메인과 하위 도메인은 동일한 문서 루트 디렉터리를 가리킵니다.

브라우저에 http를 입력하면 위에 나열된 모든 URL이 https로 리디렉션되도록 만드는 방법은 무엇입니까? 서버 별칭으로 구성된 하위 도메인에 대해 이 작업을 수행하려면 포트 80의 다시 쓰기 논리에서 정확히 무엇을 변경해야 하는지 잘 모르겠습니다.

답변1

귀하의 구성은 조건부( 에 대한 요청에 따라 =example.com)이므로 RewriteRule은 요청을 에 리디렉션하지 않습니다 xx.example.com.

다음 중 하나를 수행할 수 있습니다.

  • 해당 조건을 개선합니다(여전히 특정(하위) 도메인에 대해서만 리디렉션하려는 경우). 그다지 아름답지는 않지만 예를 들면 다음과 같습니다.

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =example.com     [OR]
    RewriteCond %{SERVER_NAME} =xx.example.com  [OR]
    RewriteCond %{SERVER_NAME} =yy.example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    
  • new-subdomain.example.com조건을 완전히 제거하고 모든 것을 https로 리디렉션합니다( 아직 유효한 인증서가 없는 https로 리디렉션할 위험도 있음 ).

    RewriteEngine on
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
    

관련 정보