.htaccess에서 SSL 및 www 강제 실행


12

SSL을 강제로 수행하는 방법을 찾고 www있습니다.

나는 둘 다 개별적으로 강제 할 수 있었지만 함께 리디렉션 문제가 계속 발생했습니다. 다음 코드는이 형식으로 URL을 처리 할 때 작동합니다. http://example.com제대로 리디렉션 https://www.example.com되지만 수신 URL이 https://example.com전달되지 않으면 https://www.example.com-제안 사항이 있습니까?

편집 : 또한로 보내야 http://www.example.com합니다 https://www.example.com.

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

답변:


7

첫 번째 줄은 내부 URL이 다시 쓰여지지 않도록하는 데 사용됩니다. 다른 페이지가 표시 될 수 있으므로 제거했습니다.

호스트가 example.comHTTPS를 통해 요청되거나 요청되지 않으면로 다시 쓰여집니다 https://example.com/. 즉, 그것은 재 작성 http://example.com, http://www.example.comhttps://example.comhttps://www.example.com한 행동.

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Apache 2.2 용 mod_rewrite에 대한 문서 .

과 같은 하위 도메인을 가지고 있다면 forum.example.com첫 번째 규칙은 그대로 있어야합니다. 그렇지 않으면, 당신은 www.example.com또한 에 대해 부정적인 일치를 할 수 있습니다.


0

세 번째 줄은 다음과 같을 필요는 없습니다.

RewriteCond %{HTTP_HOST} ^example\.com$

0

이 시도:

RewriteCond %{REMOTE_ADDR} !127\.0\.0\.0
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} !^www.example\.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

0

내가 사용하고 완벽하게 작동하는 다음 줄을 사용할 수도 있습니다.

(CloudFlare를 사용하지 않는 경우 상단 RewriteCond를 제거하십시오)

RewriteCond %{HTTP:CF-Visitor} '"scheme":"http"' [OR]
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

0

내 사이트에 이것을 구현했습니다. 매력처럼 작동합니다! .htaccess 파일 맨 위에 추가되었습니다. www, http 또는 https가 아닌 www를 입력하는 사람들의 모든 인스턴스를 리디렉션합니다.

# BEGIN HTTPS Redirect
RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]
# END HTTPS Redirect

0

위의 모든 제안을 테스트했지만 전체 시나리오를 다루지는 못했습니다.

모든 방문자가 방문하기를 원했습니다 https://www.example1.com/

다른 사용자가 제공 한 코드 중 일부는 비보안 및 / 또는 www가 아닌 ​​URL을 https://www.example1.com/로 이동했지만 https://example1.com"www"로 변환되는 코드는 없습니다.

차이가있을 경우를 대비하여 GoDaddy에서 호스팅하는 웹 사이트가 있습니다.

이것은 나를 위해 일한 코드입니다.

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^www.example1\.com$ [OR]
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.example1.com/$1 [L,R=301]

마지막 줄은 다음과 같습니다.

RewriteRule ^(.*)$ https://www.example1.com/$1 [R,L]

그러나 Google과 다른 검색 엔진이 이전 링크를 업데이트하기를 희망하면서 "301 영구적으로 " 메시지를 전송하기 위해 "301"코드를 사용했습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.