URI가 없으면 htaccess 강제 https가 작동하지 않음
저는 Apache와 함께 일한 적이 없기 때문에 완전히 초보자입니다.
3 개의 도메인이 사용되는 공급자 웹 사이트에 멀티 호스팅 계정이 있습니다. example.com호스팅 계획의 기본 도메인이 아닌 도메인에 대해 https 연결을 강제하고 싶습니다 . 내가 한 일은 웹 사이트의 모든 파일이있는 폴더 인 .htaccess경로에 파일 을 추가하는 것 examplecom/public_html입니다. 에서 .htaccess나는 제공 가이드에서 복사 붙여 넣기이 문자열을 가지고 :
RewriteEngine on
RewriteBase /
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com%{REQUEST_URI} [L,R=301]
비어 있지 않은 URI가있는 페이지로 이동하면 웹 사이트가 제대로 작동하지만 기본 페이지에는 없습니다. 예에서 : http://example.com/anypage올바르게로 리디렉션되는 https://www.example.com/anypage동안, http://example.com/로 리디렉션 https://www.example.com/public_html, 그리고 왜 이해할 수 없습니다.
답변
기존 지시문과 충돌이있는 것 같지만 기존 지시문을 변경하여 차이가 있는지 확인할 수 있습니다.
RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://www.example.com/$1 [L,R=301]
상기 제공 .htaccess파일 것은에 위치한 examplecom/public_html다음 캡처 역 참조 (디렉토리 $1) 만 (어떤 경우)이 다음에 오는 모든 것을 포함한다. 반면 REQUEST_URI서버 변수 항상 전체 URL 경로가 포함되어 있습니다.
RewriteBase당신이에서 절대 URL 사용하고 있기 때문에 지침은 여기에 불필요 RewriteRule 대체를 .
오류가있는 301이 캐시되었을 가능성이 있으므로 테스트하기 전에 브라우저 캐시를 지워야합니다. 캐싱 문제를 방지하기 위해 302 (임시) 리디렉션으로 테스트합니다.