2011-12-07 4 views
0

아파치 매뉴얼의 지침에 따라 기본 아파치 설정을 얻었지만 리다이렉션 규칙은 현재로서는 조금 복잡해 보이므로 나에게 도움이되기를 바랍니다.아파치 다시 쓰기 규칙

나는 다음과 달성하고자 : HTTP를 통해

  • 모든 들어오는 요청은 HTTPS를 사용하도록 리디렉션해야합니다.
  • 가상 호스트 (m.domain.tld 및 content.domain.tld)로 정의 된 서브넷을 제외한 모든 서브넷은 domain.tld로 리디렉션해야합니다.
  • 나는 "/"다음에 모든 것을 보관하지만, 필요하지는 않습니다. 예를 들어

:

  • HTTP : /domain.tld → HTTPS : /domain.tld
  • HTTP : /whatever.domain.tld → HTTPS : /domain.tld
  • HTTPS : /whatever.domain.tld → HTTPS : /m.domain.tld → HTTPS :
  • 에 http /domain.tld

을 /m.domain.tld 나는 기초의 일이있어 이것은 매우 기본적인 규칙이지만, http를 통해 들어오는 요청에 대해서만 작동하므로 https를 통해 들어오는 존재하지 않는 서브넷은 다시 포맷되지 않습니다.

<VirtualHost _default_:80> 
    Redirect permanent/https://domain.tld/ 
</VirtualHost> 

희망하시는 분은 명확한 지침 (아직 분재하지 않으 셨음)의 방향으로 나를 도울 수 있기를 바랍니다.

+0

시작하려면 : https는 http : 443과 80 (기본 공통 포트 번호)이 아닌 다른 포트에서 제공됩니다. HTTPS를 강요합니다 - 이미 검색 할 수있는 많은 주제가 여기에 있습니다. 하위 도메인 이름과 동일 : "표준 도메인 이름"을 검색하십시오. 귀하의 케이스에 대한 정확한 규칙을 제공하는 데는 아무런 문제가 없습니다. 그러나 이러한 종류의 질문은 거의 2 일마다 요청되기 때문에 여기에서 답변을 찾는 데 문제가 없어야합니다. 그 (것)들을 찾으십시오 당신이 가지고 있을지도 모르는 어떤 특정한 문제든지를 가진 당신의 포스트를 새롭게하십시오. – LazyOne

+0

정말로 유감스럽게도, 나는 결코 그 사람을 읽지 않고 항상 묻지 않는 것에 대해 자신을 싫어합니다. 내가 물어 본 이유는 stackoverflow와 같은 사이트를보고 며칠 후 규칙에 대한 실질적인 파악을 할 수 없기 때문입니다. 그러나 나는 타이핑하면서 실험하고있다. 나는 명백한 (보안) 결함으로 copy-paste 규칙 집합을 만드는 것에 약간 두려워합니다. 여기서 "검토를 위해 작업 규칙을 작성"할 때 허용됩니까? – Bart

+0

"여기를 확인하십시오"또는 "무엇이 잘못 됐는지"다음에 NO가됩니다. "이것은해야 할 일이며, 여기에 규칙이 있습니다. 이것은 일이고 이것은 도움이 될 수 있습니다"- 네, 분명히 당신이 그것에 대해 노력하고 있으며 약간의 도움이 필요하다는 것을 보여 주거나 밀어 넣으십시오 올바른 방향 등 – LazyOne

답변

0

이 mod_rewrite는 규칙을 시도해보십시오

RewriteEngine On 
Options +FollowSymLinks 

# force HTTPS for m.example.com 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} =m.example.com 
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# only allow m.example.com & example.com -- everything else gets redirected to https://example.com 
RewriteCond %{HTTPS} =on 
RewriteCond %{HTTP_HOST} !=m.example.com 
RewriteCond %{HTTP_HOST} !=example.com 
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L] 

# if still no HTTPS then force it (for any other subdomain) 
RewriteCond %{HTTPS} !=on 
RewriteRule .* https://example.com%{REQUEST_URI} [R=301,L] 

# your other rewrite rules below 

이 명심, 그 순서에 당신은 어떤을 다룰 것입니다 특정 하위 도메인 또는 와일드 카드 SSL 인증서에 대한 적절한 SSL 인증서를 필요 something.example.com 서버에 할 수 하위 도메인 mod_rewrite가 무엇이든 할 수있는 기회가 생기기 전에 HTTPS의 SSL 부분이 작동하기 때문에 중요합니다 (보안 연결이 이미 올바르게 설정된 경우에만 시작됩니다).

+0

빠른 응답을 보내 주셔서 감사합니다! SSL은 이미 와일드 카드 인증서로 작업하고 있습니다. 나는 가상 호스트를 올바르게 설정했으면 좋겠다. 첫 번째와 마지막 규칙을 이제 해당 가상 호스트의 유일한 내용 인 에 넣습니다.따라서 모든 요청은 DocumentRoot, 서버 인증서 등을 포함하는 로 리디렉션됩니다. 그리고 두 가지 마지막 규칙을 추가하여 https의 이상한 하위 도메인에 대한 요청도 다시 포맷되도록합니다. – Bart