2011-12-23 11 views
17

私はstackoverflowを見てみるが、私は私の答えを見つけることができません。.htaccessページとlangエラー

私はどのドメインのサブドメインがユーザであり、どのページがロードされているかを知る必要があります。

例:en.domain.com/contactus

この英語はお問い合わせページをロードする必要があります。

RewriteCond %{HTTP_HOST} ^(www\.)?domain.com$ [NC] 
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC] 

RewriteCond %{HTTP_HOST} ^en.domain.com$ [NC] 
RewriteRule ^(.*)$ index.php?lang=en&page=$1 [L,NC] 
RewriteCond %{HTTP_HOST} ^fr.domain.com$ [NC] 
RewriteRule ^(.*)$ index.php?lang=fr&page=$1 [L,NC] 
#etc... 

しかし、私は、ページの取得エコー何らかの理由で、値は次のとおりです:私が持っているもの

はあるのindex.phpので、私はページを読むことができません。

答えて

18

は、ここであなたが使うべきものだ。

RewriteEngine On 
RewriteBase/

SetEnvIf Host ^www\. lang=en 
SetEnvIf Host ^en\. lang=en 
SetEnvIf Host ^fr\. lang=fr 

RewriteCond %{REQUEST_URI} !\.(css|png|gif|jpe?g|js)$ [NC] 
RewriteRule ^([a-z0-9_\-]+)/?$ index.php?lang=%{ENV:lang}&page=$1 [L,NC,QSA] 

%{ENV:lang}は、あなたのPHPコードで($_GET['lang'];から取得します(サブドメインから)SetEnvIfから読み取られ、正しい言語を設定します - それはだと仮定するとPHP)

このように、サブドメインは、サブドメインに対して繰り返しルールを作成することなく、動的にロードされます。画像やJavaScriptをページとして読み込まないようにするルールも追加しました。

+0

ありがとう、私はいくつかのものを変更しますが、この作業は完璧です。 – goblar

+0

よろしくお願いいたします。ありがとうございました。ありがとうございました –

+4

+1 for setenvif – Tech4Wilco

関連する問題