isapi_rewrite v2를 사용하고있는 것처럼 보입니다. 따라서 해당 버전에 대한 답변을 드리겠습니다. v3 구문은 약간 다릅니다.
첫 번째 줄에는 www에 대한 부정적 예측을 위해 !
이 필요하다고 생각합니다. 표시된 것처럼 www가 아닌 www가 일치합니다.
대답은 등, 다음, URL의 조각을 캡처 submatch $ 1, $ 2 재 작성에서 그들을 사용하는 것
RewriteCond Host: (?!www\.)example.com
RewriteRule (.*) http\://www.example.com$1 [I,RP]
당신은에, 어떤 도메인에 대한 더 일반적인 만들 수
example.com 대신 캡처하여 다른 웹 사이트로 쉽게 복사하십시오. URL의 나머지 부분은 이제 $ 2이지만 첫 번째 캡처 $ 1이됩니다.
RewriteCond Host: (?!www\.)(.*)
RewriteRule (.*) http\://www.$1$2 [I,RP]
규칙은 위 항상 페이지가 HTTPS를 경우에도, HTTP로 리디렉션됩니다. http 또는 https를 그대로 유지하려는 경우 (예 : https://example.com/a?b=1
~ https://www.example.com/a?b=1
) https 플래그를 찾아 's'로 대체하십시오. 이것은 말로 표현하기가 까다 롭습니다. HTTPS 서버 변수 값을 'on'으로 찾고, 'on'이면이 값을 유지합니다 (이제 두 번째 캡처입니다). 다른 것이 있으면 유지하지 않습니다. 그런 다음 규칙에서 두 번째 캡처가 있으면? 2가 테스트됩니다. 그럴 경우 's'를 추가하고, 그렇지 않으면 (콜론), 아무 것도 추가하지 않습니다 (콜론 뒤에 아무 것도 입력하지 않음). 이 세트에서 나머지 URL은 이제 세 번째 하위 문자열입니다.
RewriteCond Host: (?!www\.)(.*)
RewriteCond %HTTPS (on)|.*
RewriteRule (.*) http(?2s:)\://www.$1$3 [I,RP]
마지막으로 (거의 다!)이 혼자 하위 도메인을 두지 않습니다. 'example.com'대신 (. *)로 인해
abc.example.com/whatever...
을
www.abc.example.com/whatever...
으로 바꿉니다. 따라서 개발자를위한 스테이징 또는 로컬 호스트와 같이 혼자 남겨 둘 하위 도메인이 있거나 호스팅 된 쇼핑 도메인의 '상점'이라고 말하면 'www'를 사용하여 '또는'할 수 있습니다 (localhost에는 마침표가 없으며, // localhost를 처리하기 위해).
RewriteCond Host: (?!www\.|staging\.|shop\.|localhost)(.*)
RewriteCond %HTTPS (on)|.*
RewriteRule (.*) http(?2s:)\://www.$1$3 [I,RP]