2016-08-25 2 views
2

현재 나는 다음과 같은 htaccess로 지시문을 사용하여 HTTPS에 대한 모든 페이지를 리디렉션하고 있습니다. htaccess 지시어를 사용하면, 사용자가 http를 강요받는이 페이지를 제외한 모든 페이지에서 https로 어떻게 리디렉션 할 수 있습니까?htaccess에서 하나를 제외한 모든 페이지를 HTTPS로 보내려면 어떻게해야합니까?</p> <pre><code>RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] </code></pre> <p>을하지만 HTTP 전용 액세스 할 필요가 한 페이지, <code>http://foo.bar/baz</code> 있습니다

편집 : 나는 이것이 Laravel 4 응용 프로그램이 있음을 언급해야하고, 나는 현재도 당신은 RewriteRule에 부정적인 정규식 패턴을 사용할 수 있습니다

# Redirect Trailing Slashes... 
RewriteRule ^(.*)/$ /$1 [L,R=301] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 

답변

1

전면 컨트롤러를 처리하기 위해 다음과 같은 규칙이 있습니다

RewriteEngine On 

RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} !/baz[/?\s] [NC] 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L] 

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} /baz[/?\s] [NC] 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R=301,NE,L] 

RewriteRule ^index\.php - [L,NC] 

# Redirect Trailing Slashes... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ /$1 [L,R=301,NE] 

# Handle Front Controller... 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule^index.php [L] 
+0

죄송합니다. 여기 논리를 설명해 주시겠습니까? – KinsDotNet

+0

흠. 이것은 나를 위해 작동하지 않는 것 같습니다./baz는 여전히 https를 리디렉션합니다. – KinsDotNet

+0

laravel이되는 응용 프로그램과 함께 제공되는 규칙에 대한 정보를 추가했습니다. 당신이 그것을보고 나에게 돌아올 수 있을까요? – KinsDotNet

1

하나 개 이상의 예외하려 할 때 부정적 예측이 경우에 especifically 작동합니다

RewriteRule ^(?!baz)(.*) https://%{HTTP_HOST}/$1 [R,L] 

기본적으로 baz를 제외한 모든 것을 리디렉션합니다.

SideNote : ".htaccess"는 Apache의 저장소를 다시 작성하는 것이 아니라는 것을 기억하십시오. 가상 호스트의 구성에 액세스 할 수 있다면이 다시 쓰기를 추가해야합니다. htaccess는 오버 헤드와 복잡성을 추가합니다.

관련 문제

 관련 문제