2010-01-15 1 views
0

여러 도메인을 닷컴 닷컴 주소로 리디렉션하고 싶습니다. www를 가리켜 야합니다lighttpd에서 .cn .jp .ch .eu .fr을 domain.com으로 리디렉션합니다.

  • www.domain.fr

  • 유럽 연합 (EU)
  • FR 채널
  • JP
  • CN :

    도메인은 다음과 같은 확장 기능을 가지고있다. domain.com - sub.domain.fr은 sub.domain.com을 가리켜 야하고 extensio 다음의 경로는 가리켜 야합니다. n은 www.domain.fr/foo가 www.domain.com/foo를 가리 키도록 그대로 유지해야합니다.

    FR은 예입니다. 설명 된대로 모든 확장에 대해 작동해야합니다. 필자가 명시 적으로 작성하거나 (cn | jp | ch | eu | fr) 또는 와일드 카드를 설정하는 경우에는 문제가되지 않습니다. 당신의 도움에 대한

    $HTTP["host"] =~ "(*.)?domain\.(*)(/*)?$" { 
        url.redirect = ("^/(.*)" => "http://%1.domain.com%3") 
    } 
    

    감사 :

    본인은 작동하지 않았다 다음을 시도!

    답변

    0

    정규 표현식에 문제가 있습니다. (*) 아무 의미가 없습니다. 제 생각에는 glob 구문에 익숙하다고 생각합니다. 그냥 기억

    * (in glob) === .* (in regexp) 
    

    하는 것은 기본적으로 '.' 아무 의미 '*' 그 아무것도의 0 번 이상을 의미한다. 그래서 나는 당신이 원하는 것 같아요 :

    $HTTP["host"] =~ "(.*\.)?domain\.(.*)$" { 
        url.redirect = ("^(/.*)" => "http://%1.domain.com$1") 
    } 
    

    참고 '.' 전혀 모든 문자를 의미하기 때문에 일반 점 '\.' 이스케이프 할 필요가있다.

    또한 lighttpd 구문에서 $HTTP["host"] 변수 에는 경로이 포함되지 않습니다. $HTTP["host"] 부분이 아닌 url.redirect 부분에서 경로 추출을 수행하십시오!

    +0

    사실 내가 정규식과 glob ...에 익숙하지 않다. 그래서 나는 그것들을 결합한다;) "어떤 경로도 포함하고 있지 않다"는 것은 무엇을 의미합니까? www가 항상 도메인의 시작 부분에 있기를 원하기 때문에 다음 코드가 나와 함께 작동합니다 (호스트도 포함) : $ HTTP [ "host"] = ~ "^ domain \ .com $"{ url.redirect = ("^/(. *)"=> "http://www.domain.com/$1") } – Marc

    +0

    .com은 끊임없이 반복되므로 해결책이 작동하지 않을 수 있습니다. – Marc

    관련 문제