2010-03-30 4 views
0

I가 이미 HTTPS에 해당 URL을 강제로이 코드를 가지고 :HTTP 또는 HTTPS

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/my/?.*$ 
RewriteCond %{REQUEST_URI} !^/my/basket/add?.*$ 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/login/?.*$ 
RewriteCond %{REQUEST_URI} ^/logout/?.*$ 
RewriteCond %{REQUEST_URI} ^/register/?.*$ 
RewriteCond %{REQUEST_URI} ^/newsletter/?.*$ 
RewriteCond %{REQUEST_URI} ^/reset-password/?.*$ 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

을 그리고 이것은 정말 잘 작동하지만 내가 원하는 것은 을하는 것이 어떤 URL을 힘이다 내가 HTTP 페이지 목록을 작성하고 내가 위의 HTTPS와 함께이 같은 리디렉션 싶지 않아 (301)

을 발사, HTTP에 위의 조건을 준수하지 않습니다. 보안 페이지 URL은 시스템을 어떻게 든 변경하지 않는 한 항상 동일하게 유지되지만 필요할 때 업데이트 할 수 있습니다. 안전하지 않은 페이지는 여기에서 영업 팀에 의해 동적으로 작성 및 편집 될 수 있으므로 지능적으로 대상이 될 필요가 있습니다.

어떻게 할 수 있습니까? 그것 .htaccess을 사용하여 수행 할 수있다, 나는 PHP 프레임 워크 내에서 처리하여 이것을 달성하고 있지만 이것은 꽤 중요한 성능 문제뿐만 아니라 Google 크롤 링 문제를 일으켰습니다.

건배!

답변

4

세이드의 대답에 대한 수정, 당신이 꺼져 할 때 HTTPS가 켜져 있으면 사실 만 리디렉션 할 때문에 (또한, 더 % {HTTP} 변수가 없다). 다시 말하지만, 모든 규칙을 밟은 후에 이것을 써 넣으십시오.

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^/login/?.*$ 
RewriteCond %{REQUEST_URI} !^/logout/?.*$ 
RewriteCond %{REQUEST_URI} !^/register/?.*$ 
RewriteCond %{REQUEST_URI} !^/newsletter/?.*$ 
RewriteCond %{REQUEST_URI} !^/reset-password/?.*$ 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

하지만이 테스트하지 않았습니다, 그래서 100 %가 작동합니다.

편집 : 보안 페이지가 필요한 조건이므로 여전히 HTTPS 모드로 유지됩니다.

+0

좋아, 내 HTTPS'RewriteRule'의'L' 플래그는 거기에 일치하는 것이 있으면 우리는 HTTP를 사용하고 리다이렉트하고 마지막으로 처리 된 규칙이라고 말합니다. 하지만 이미 HTTPS를 사용한다면 어떨까요? 내 원래 조건을 무시하고 다시 HTTP로 리디렉션됩니다 ... 그렇지 않습니까? –

+0

사실,이 테스트를 통과하면 항상 HTTP에 항상 아무것도 리디렉션하지 않습니다. –

+0

맞습니다. 보안 페이지의 조건을 추가해야합니다 (일부 중복이 필요합니다). 편집을 참조하십시오. – Kazar

1

거기에 규칙에 L 플래그를 사용하고 있기 때문에 이전 조건에서 발견되지 않은 요청을 HTTP로 다시 작성하는 것과 같은 RewriteCond를 사용할 수 있어야합니다. 게시 한 규칙 이후에 배치하십시오. 이것은 너무 분명해 보이지만 작동 할 수도 있습니다.

RewriteCond %{REQUEST_URI} ^.*$ 
RewriteCond %{HTTP} OFF 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L] 
+0

이것이 트릭을 수행 할 지 잘 모르겠다. 나는 확실히 알고 지내는 것이 너무 길다. 잘하면 그것은 올바른 방향으로 당신을 가리킬 수 있습니다. – Seidr

+0

나는 내일 직장에 돌아와보고 할 때 그것을 시도 할 것이다! 감사합니다 : D –

+0

불행히도 이것은 작동하지 않았습니다 –