
나는 그 문제에 관해 SO 주제를 읽었습니다. 그러나 이는 단일 호스트에만 적용됩니다.
현재 및 미래 도메인의 모든 서버에 대해 통일된 규칙을 갖고 싶습니다.
기본적으로 모든 요청에서 www를 제거하고 액세스할 수 있는 도메인 이름만 남겨두고 싶습니다.
Apache도 HTTPS를 제공하는데, 이것을 모두에 적용하려면 어떻게 해야 할까요?
감사해요!
http://www.example.com >> http://example.com
https://www.example.com >> https://example.com
마리아
답변1
당신이 설명하는 것은 (겉보기에) 사용이 mod_rewrite
어느 정도 불가능합니다.
여러 "수준"의 구성은 에 쌓이지 않으므로 mod_rewrite
기본 서버 구성에 정의된 규칙 세트를 자동으로 가져와서 에 위임된 요청에 적용하지 않습니다 <VirtualHost>
.
그러나 어쨌든 어느 시점에 할당해야 한다고 가정하면 <VirtualHost>
본문 내에서 다른 규칙을 가질 계획이 없다면 <VirtualHost>
(그들이 .htaccess
또는 <Directory>
섹션에 있다면 괜찮을 것입니다) 수행원.
기본 구성에서는이 관련 질문에 대한 답변그것을 적용하십시오 :
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.
RewriteCond %{HTTPS}s ^on(s)|off
RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]
그런 다음 각 <VirtualHost>
섹션에서 다음을 사용하여 이를 "가져올" 수 있습니다.RewriteOptions
지령:
RewriteEngine On
RewriteOptions inherit
물론 규칙 세트를 전체적으로 복사할 수도 있지만 <VirtualHost>
이렇게 하면 관련 규칙 세트가 단일 위치에 유지됩니다.
이 경우 직접 추가 규칙을 갖지 말 것을 제안하는 이유는 <VirtualHost>
상속된 규칙이 포함되기 때문입니다.~ 후에의도하지 않은 부작용이 있을 수 있는 구성의 현재 수준에서 정의한 모든 것.