2009-12-26 3 views
-1

을 example.com/index.php?language=en에 :리디렉션 en.example.com I로 시작하는 주소로 리디렉션하려는

en.example.com/somefile.php 

에 :

example.com/somefile.php?language=en 

에서의 mod_rewrite 모듈을 사용하여 lighttpd. 지금까지 나는 이것을 얻었다 :

$HTTP["host"] =~ "^en\.(.*)\.com$" { 
     url.rewrite-once = (
       "^/(.*)" 
       => 
       "/$1?language=en" 
     ) 
} 

그러나 이것은 작동하지 않는 것 같다. 이 작업을하려면 어떻게해야합니까?

+0

이 왜 PHP로 HTTP 호스트에서 언어를 추출하지 않습니다 ('$ _SERVER [ 'HTTP_HOST']')? – Gumbo

+0

@Gumbo - 다른 하위 도메인이 없으면 검색 엔진은이 사이트에 더 많은 언어가 있다는 것을 알지 못합니다. –

+2

@tomaszs : 언어 식별자를 'http : // example.com/ko/...'와 같은 URL 경로에 넣는 것은 어떻습니까? 그리고 HTTP와 HTML에서 적절한 언어 선언을 잊지 마라. – Gumbo

답변

6

이 시도 :

$HTTP["host"] =~ "^en\.([^/.]+)\.com$" { 
    url.rewrite-once = (
     "^/([^?]*)(\?(.*))?" => "http://%1/$1?language=en&$3" 
    ) 
} 
0

시도 .. 당신 ..

$ HTTP [ "호스트"] = ~ "^ 엉 작동하는 경우 ([^.] + COM [A-Z0-9 -] 다음.. +. PHP) $ "{ url.rewrite-번 = ( ?". ^/(*) " => "/ $ 언어 1 = EN " ) }

+0

작동하지 않습니다. ( –

+0

당신의 문제를 해결할 수 있었습니까? – amar4kintu

3

시험해보십시오.

$HTTP["host"] !~ "^(en|fr)\.([^.]+\.com)$ { 
    url.rewrite-once = (
     "^/(.*)" => "http://%2/$1&language=%1" 
    ) 
    } 

하위 도메인 en을 다시 작성해야합니다. 및/또는 fr. TLD를 포함한 모든 도메인에 URL 문자열을 그대로두고 language 매개 변수를 추가하십시오.

예 :

http://en.example.com   -> http://example.com/&language=en 
http://fr.example.com/directory/ -> http://example.com/directory/&language=fr 
+0

'http : // example.com/& language = en'의'& language = en'은 URL 경로의 일부이며 URL 쿼리의 일부가 아닙니다. – Gumbo

+0

참 : "&"대신 "?"를 사용할 수 있지만 URL에 이미 매개 변수가있는 경우 URL이 깨집니다. 예 : http://en.example.com/?param1=12345 -> http : // example.com/? param1 = 12345? language = ko' 이미 검색어 문자열 매개 변수가있는 URL을 처리해야합니까? –

+0

이 질문을하지 않고 방금 편집했습니다. – Gumbo

관련 문제