2017-10-16 10 views
1

myredirects를 원하는대로 작동시키지 못했습니다.www 및 https 리디렉션이 원하는대로 작동하지 않습니다.

  1. 리디렉션 http://example.comhttp://www.example.com

목적 1 https://www.example.com로 리디렉션

  • https://www.example.com에 aleady 달성되었지만, 문제는 https://www.example.com에 재 http://www.example.com이며, 그 실제로 404 결과 : 내 목표는 오류.

    방법 1.

    <If "%{HTTP_HOST} != 'www.enmowe.com'"> 
         Redirect "/" "https://www.%{HTTP_HOST}/$1" 
        </If> 
    
        <If "%{SERVER_PROTOCOL} != 'HTTPS'"> 
         Redirect "/" "https://www.%{HTTP_HOST}/$1" 
        </If> 
    

    방법 2 : 나는 내 아파치 가상 호스트에서 다음을 시도

    https://enmowe.com/ (403) is not reachable 
    http://enmowe.com/ (301) is forwarding to https://www.enmowe.com/ (200) 
    https://www.enmowe.com/ (200) is available 
    http://www.enmowe.com/ (404) is not reachable 
    

    : I은 다음과 같습니다 문제를 식별 할 수 Ryte을 사용

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^(www.\.enmowe\.com)?$ 
    RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC] 
    

    방법 3

    RewriteEngine on 
    RewriteCond %{SERVER_NAME} =enmowe.com 
    RewriteRule^https://www.%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] 
    

    일종의 권리 잃어버린 느낌 프로토콜이 또는 호스트 권리가 아닌 경우 지금

  • +0

    아파치는 www.enmowe.com에 대한 가상 호스트 항목을 가지고 있지 않으므로 다시 쓰기 규칙을 실행할 수 없으므로 .... –

    +0

    www.enmowe.com이 가상 호스트의 ServerAlias로 설정되었습니다. –

    답변

    2

    리디렉션 할. 그래서 당신은이 두 가지 조건을 수립해야합니다

    RewriteEngine On 
    
    RewriteCond %{HTTPS} !=on 
    RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC] 
    
    RewriteCond %{HTTP_HOST} !^(www.\.enmowe\.com)?$ 
    RewriteRule (.*) https://www.enmowe.com/$1 [R=301,L,NC] 
    

    모든이에 연결되지 않은에서 https://enmowe.com에 도달 할 수없는 사실입니다. 도달 할 수 있고 올바른 인증서를 얻으려면 호스트 이름을 ServerAlias으로 https 서버의 정의에 추가하십시오.

    진술 : 귀하의 질문과 관련이 없으므로 virtual-hosts 태그를 삭제하십시오.

    +0

    감사합니다. 이것은 부분적으로 만 작동합니다. URL을 http : // enmowe ... 또는 http : //www.enmowe 일 때 https : // www로 설정합니다. 그러나 https : // enmowe ...는 여전히 https : /로 리디렉션하지 않습니다. /www.enmowe ... –

    +0

    이것은 귀하의 질문에서 복사 한 정규 표현식 때문일 수 있습니다. 나는 시험하지 않았다. [다시 쓰기 디버깅] (https://stackoverflow.com/questions/9632852/how-to-debug-apache-mod-rewrite)을 활성화하고 두 번째 조건이 일치하는지 살펴보십시오. – blafasel

    +0

    이 내가 enmowe.com.com 가상 호스트 파일에있는 것입니다 :! ' 한다 RewriteCond %에한다 RewriteEngine {HTTPS} =에 [OR] 한다 RewriteCond % {HTTP_HOST}^(www가 \ enmowe \... com)? $ RewriteRule^(. *) https : //www.% {SERVER_NAME} % {REQUEST_URI} [END, NE, R = 영구] ' 이것은 답변을 기반으로합니다. 그러나 여전히'https : // enmowe.com'은 리다이렉트되지 않습니다. 은 또한 추가! 한다 RewriteCond %에 '한다 RewriteCond % {HTTPS} {HTTP_HOST}^(WWW를 \ enmowe \ .COM..) $ 한다 RewriteRule^HTTPS? (*.) : // WWW.% {SERVER_NAME} % {REQUEST_URI} [END, NE, R = 영구] ' 정말 이상합니다. 나는'www.enmowe.com '을위한 유령을 창조했다. –