2014-12-19 3 views
0

일부 정기 웹 사이트 및 일부 SSL 웹 사이트를 실행하는 Apache 웹 서버를 담당합니다. 이 웹 사이트는 모두 회사 내부 용입니다. 모든 웹 사이트는 VirtualHost 지시어를 사용하고 있습니다. 그래서 내가 apache를 http와 https 사이에서 자동으로 전환하는 방법

- http://siteA.mycompany 
- http://siteB.mycompany 
- http://siteC.mycompany 
- https://siteD.mycompany 
- https://siteE.mycompany 

모든 잘 원활하게 실행해야하지만, 일부 사용자들이 문제가 때때로 HTTP를 입력해야하기 때문에이 웹 사이트에 접속을해야하고 때로는 그들이 https를 ... 입력해야하는 나에게 불평 (관리자의 작업이 너무 어렵다 때때로).

이 작업을 해결하는 방법을 찾고 있습니다. https 요청을 사용하여 정의 된 웹 사이트로 이동하는 http 프로토콜로 오는 요청의 경우 리디렉션되어야합니다. 역순으로 동일한 작업이 실행됩니다 (https에서 http로).

내가 무엇을 찾고 설명하는 또 다른 방법 :

* user request http://siteD.mycompany 
* but website is define as using https protocol 
* user's web browser change his request to https://siteD.mycompany 
* user is no more bothered anymore by the bad protocol problem 

같은 일을 할 수있는 어떤 조언/좋은 방법이 있습니까? 이 '문제'로 인해 우려되는 웹 사이트가 많기 때문에 해결책이 일반적 일 수 있습니다.

+0

사용자가 'http : // siteD.mycompany'에 액세스 할 때 현재 무슨 일이 발생합니까? 또한 siteD.mycompany에 대해 VirtualHost 구성을 넣을 수 있습니까? – slash

+0

@slash 사용자가 'http : //siteD.mycompany'에 액세스 할 때이 ServerName이 잘못 구성되어 있으면 오류가 발생합니다. 사용자 지정 오류 페이지로 보내주는 "ErrorDocument 404"apache 지시문에 의해 catch됩니다. – tdaget

답변

0

이 위키 문서를 참조하십시오. here
각 가상 호스트 구성에 대해이 규칙이 필요합니다. https://siteD.mycompany의 예를 고려하면 http에 액세스하는 경우 사용자를 https 사이트로 리디렉션하기 위해 다시 쓰기 규칙이 필요합니다.

<VirtualHost *:80 *:443> 
ServerName siteD.mycompany 
RewriteEngine on 
RewriteCond %{HTTPS} !=on 
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R=301,L] 
</VirtualHost> 

규칙 아래 http://siteA.mycompany에 대해 같은 논리를 적용 사용할 수 있습니다. 이 규칙에 대한

<VirtualHost *:80 *:443> 
ServerName siteD.mycompany 
RewriteEngine on 
RewriteCond %{HTTPS} =on 
RewriteRule ^/?(.*) http://%{HTTP_HOST}/$1 [R=301,L] 
</VirtualHost> 

당신이 가상 호스트 설정이 모두 포트 80 및 현재 443 이상 연결을 허용되어 있는지 확인해야 할 일을, 당신이 https://siteD.mycompany을 액세스 할 때 때문에 엄격한 포트 구성이 가능성이 있습니다, 404가 던졌습니다.
행운을 비네!

+0

답변이 도움이됩니다. 감사. 서버 이름 mysite.mycompany.org:443 ServerAlias에 mysite.mycompany.org:80 을 DocumentRoot/데이터/WWW/내 사이트 ... 한다 RewriteEngine에 한다 RewriteCond % 제가 '<: 80 * 443 * 가상 호스트>했다 HTTPS {} = 한다 RewriteRule에 ^/HTTPS!? (*.) : // % {HTTP_HOST}/$ 1 R = 301, L] ... ' 본 작업 잘 – tdaget

+0

@tdaget : 다행히 도왔다! 친절하게 투표를 고려하십시오. – slash

+0

투표율을 높이기 위해 내 명성이 최소한으로 떨어지지는 않습니다. - / – tdaget

관련 문제