2010-03-01 4 views
2

내 질문에 대한 주제의 많은이 알고 htaccess로 사용. 나는 그 (것)들을 전부 검사하고 밖으로 시도했다 그러나 일할 수 없다. 일부 페이지에서만 http를 https로 다시 작성해야합니다. https 페이지를 방문한 후 URL은 http로 돌아갑니다. 이것은 내가 지금까지 무엇을 가지고 :재 작성 HTTP는


# Rewrite Rules for domain.com 
RewriteEngine On 
RewriteBase/

#Rewrite www to domain.com 
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] 

#Rewrite to https 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} /secure.php 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

#traffic to http://, except secure.php 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} /secure.php 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

내가 (HTTP 트래픽 : // secure.php 제외) 마지막 규칙 세트를 건너 뛸 때 HTTPS로 secure.php 페이지가로드 및 암호화됩니다. 벌금. 마지막 규칙 집합 (http : //의 트래픽 : secure.php 제외)을 사용하면 URL이 https로 다시 작성되고 초당 파란색 (SSL)으로 바뀌며 사라집니다 (SSL 없음). URL은 여전히 ​​https입니다.

아이디어가 있으십니까? 제이 섹

+0

여기를 언급 한 바와 같이한다 RewriteCond의와 RewriteRule의 귀하의 3 세트, 2와 동일하다. –

답변

4

규칙의 3 세트 실수가있다. 해결책은 다음과 같습니다. 세 번째 규칙 집합 : https가 "on"이고 URL에 "/ secure"가 포함되어 있지 않으면 http로 리디렉션합니다. 주제 조언 오프


# Rewrite Rules for domain.com 
RewriteEngine On 
RewriteBase/

#Rewrite www to domain.com 
RewriteCond %{HTTP_HOST} ^www\.domain\.com [NC] 
RewriteRule ^(.*)$ http://domain.com/$1 [L,R=301] 

#Rewrite to https 
RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} /secure.php 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L] 

#traffic to http://, except secure.php 
RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !(/secure.php) 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L] 

: 웹 사이트 최적화에 그들의 매우 현명한 조언을 천천히 야후에 대한보고는 전에 "WWW"가 항상 더 좋은 이유 당신이 볼 드리겠습니다. 귀하의 # 1 재 작성 규칙을 반대하는 것이 좋습니다 : "www"가 없다면 추가하십시오.


RewriteLog 지시어를 사용 해보세요 : 그것은 당신이 이러한 문제를 추적하는 데 도움이 : 그것은 작동하는 경우

# Trace: 
# (!) file gets big quickly, remove in prod environments: 
RewriteLog "/web/logs/mywebsite.rewrite.log" 
RewriteLogLevel 9 
RewriteEngine On 

이 말해.

+1

그런데 비 SSL 콘텐츠 (스크립트, 이미지 등)를 참조하는 데 문제가 있습니까? 나는 이것을 시도했지만 그 다음 스크립트/스타일 시트가 SSL 페이지에서 non-ssl로 참조되어 안전하지 않은 내용에 대한 경고 메시지를 표시합니다. – jon

+0

+1이 나를 위해 작동합니다. 나는 domain.com 대신에 변화를 만들고, 나는'% {HTTP_HOST}'라고 씁니다. – diEcho