2009-07-27 1 views
0

기본적으로, 나는 우리가 많은 다른 언어를 가지고 있기 때문에 모든 URL을 다시 쓰는 것을하고 싶다. 여러 도메인을 호스팅하는 서버가 있습니다. www.example.com, www.example.fr, www.example.de, www.anotherdomain.com, www.anotherdomain.de가 있습니다. 내가하고 싶은 일은 여분의 url 매개 변수 인 lang = en을 사용하여 example.xxx의 모든 요청을 www.example.com으로 리디렉션하는 것입니다. 이것은이 작동하지 않습니다 www.anotherexample.com 등아파치의 도메인을 기반으로 URL을 재 작성하고 추가 매개 변수를 추가하는 방법은 무엇입니까?

같은 다른 도메인에 영향을 미치지 않습니다 :

가 더욱 어려운 ServerName은 호스트 이름과 완전히 다른 점이다 만드는
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.de$ 
RewriteRule ^(.*)$ http://www.example.com/$1?lang=de [PT] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.fr$ 
RewriteRule ^(.*)$ http://www.example.com/$1?lang=fr [PT] 

한 가지, prod.migr.com이라고합니다.

의견을 보내 주시면 감사하겠습니다.

답변

0

이 시도 :

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.de$ 
RewriteRule^http://www.example.com%{REQUEST_URI}?lang=de [L,R=301,QSA] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.fr$ 
RewriteRule^http://www.example.com%{REQUEST_URI}?lang=fr [L,R=301,QSA] 
0

태평양 표준시 플래그는 가장 가능성이 문제입니다. 그것이 URI가 더 mod_alias로 리다이렉트되기 때문에 대상이 전체 도메인 주소 일 때 사용되는 것을 본 적이 없다.

사용해야하는 플래그는 사용자가 방문중인 페이지에 쿼리 문자열이있는 경우의 QSA 플래그입니다.

RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.de$ 
RewriteRule ^(.*)$ http://www.example.com/$1?lang=de [QSA] 
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.fr$ 
RewriteRule ^(.*)$ http://www.example.com/$1?lang=fr [QSA] 

하지만, 훨씬 더 나은 솔루션은 모든 언어가 같은 동일한 서버에서 호스팅되는 경우 사용자는 PHP 나 ASP로 서버 측 언어로 방문 호스트를 확인하는 것입니다. 추가 정보에 응답

편집 :

당신은 요청을 리디렉션하기 때문에이 같은 다른 도메인으로 재 작성을 통해 POST 변수를 얻을 수 없습니다.

가장 좋은 방법은 mod_rewrite를 사용하는 대신 서버 측 언어로 언어를 결정하는 것입니다.

$lang = substr(strrchr($_SERVER['HTTP_HOST'], '.'), 1); 

다른 언어가 호스트를 결정하는 비슷한 방법이처럼이 될 것입니다 당신이 PHP를 사용하는 경우.

관련 문제