2016-08-22 4 views
0

이 영역에 대한 지식 부족을 용서하십시오.강제로 HTTPS/Mod-rewrite를 역순으로 사용하십시오 (WordPress 사용)

첫째, 우리의 상황 : 우리는 우리가 http://www.xxx.ca/x이 때로는 http://www.xxx.ca/x/yhttp://xxx1a.xxx.ca/x 또는 http://xxx1a.xxx.ca/x/y

우리는 우리가 어떤을 정의 할 필요가 없습니다 경우 일반의 .htaccess를 만들기 위해 노력 해왔다로 전달되는 역방향 프록시 설정을 가지고 서브 디렉토리. 기본적으로 사이트 기반으로 사이트의 파일을 수정하지 않고도이 .htaccess를 100 개 사이트에서 사용할 수 있습니다.

이 부분이 작동했습니다. 그러나 https를 강제 적용 할 수 없습니다. 모든 예제에서는 HTTP_HOST를 사용합니다. 원래 요청이 아닌 프록시 서버의 값을 반환합니다.

아마도 우리가 설정 한 것과 완전히 다른 해결책이있을 수 있지만 아파치 지식은 제한적일 수 있습니다. 아래는 일반적인 하위 폴더 문제는 해결할 수 있지만 HTTPS 문제는 해결할 수 없습니다.

<IfModule mod_rewrite.c> 
RewriteEngine On 

RewriteBase/
RewriteRule ^index\.php$ - [L] 

RewriteCond %{ENV:URI} ^$ 
RewriteRule ^(.*)$ - [ENV=URI:$1] 

RewriteCond %{ENV:BASE} ^$ 
RewriteCond %{ENV:URI}::%{REQUEST_URI} ^(.*)::(.*?)\1$ 
RewriteRule^- [ENV=BASE:%2] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule . %{ENV:BASE}index.php [L,QSA] 
</IfModule> 

더 나은 해결책이 있다면 완전히 100 % 변경하려고합니다.

답변

-1
RewriteCond %{HTTPS} !=on 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
+1

동안 // 메타 .stackexchange.com/questions/114762/explain-entire-code-based-answers)은 게시물의 품질을 향상시키는 데 정말로 도움이됩니다. 앞으로 독자의 질문에 답하고 있으며 코드 제안의 이유를 알지 못할 수도 있습니다. 코드와 설명의 가독성을 떨어 뜨리기 때문에 주석을 설명하는 코드를 사용하지 마십시오! – FrankerZ

+0

이것은 작동하지 않습니다. 명시된 바와 같이 - HTTP_HOST를 사용하는 것은 우리가 프록시하고 원래 요청을 보존하지 않는 서버의 값을 사용하는 것 같습니다. – mcorkum

+0

예를 들어, 우리의 프록시가 www.example.com/test-> server1.example.com/test 인 경우이 규칙은 사용자가 https : //server1.example.com/test가 아닌 https : //www.example.com/test – mcorkum

0

사용자를 https로 리디렉션해야하는지 잘 모르겠습니다. 어쨌든 당신이 HTTPS로 전환해야 할 때, 당신은 단지 SERVER_PORT 서버 내부 변수를 확인할 수 있습니다 80가 아닌 경우 다음 리디렉션 :이 코드는 ([설명 포함] 문제를 해결할 수

RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://%{ENV:URI}/$1 [L,R=301]