2012-04-19 10 views
12

同じホスティングサーバを指す2つの異なるドメイン(www.site1.comとwww.site2.comとしましょう)があります。htaccessはホスト名またはドメイン名に基づいて書き換えます

イタリア語のコンテンツには最初のものを使用し、英語のコンテンツには2番目のものを使用したいので、2つの異なるドメイン名が必要です。言語の場合を除き、内容は同じですが、のドメインはと異なります。私は通常、同じを使用し/?lang=en

/?lang=it

  • www.site2.com

    • www.site1.com

      だから、私は私がから翻訳できますルールを記述したいと思います多くの異なる言語のドメイン名はwww.site.com/it/からに書き換えられます(もちろん、透明な書き換え - ユーザーは別のURLを見ません)。

      私は異なるドメインを使用して同じことを達成したいと思いますが、私は何かを理解できません...私は何時間もそれに取り組んできました。

      通常私はこれを使用します。

      RewriteCond %{REQUEST_URI} /([a-z]{2}) 
      RewriteRule ^([a-z]{2})[/]*$ /index.php?lang=$1 [NC,QSA] 
      

      私はこの1つの仕事を得ることができない、異なるドメインを使用する:

      RewriteCond %{HTTP_HOST} ^www.site1\.com [NC] 
      RewriteCond %{REQUEST_URI} !^/index.php?lang=it 
      RewriteRule ^(.*)$ /index.php?lang=it [NC,QSA] 
      
      RewriteCond %{HTTP_HOST} ^www.site2\.com [NC] 
      RewriteCond %{REQUEST_URI} !^/index.php?lang=en 
      RewriteRule ^(.*)$ /index.php?lang=en [NC,QSA] 
      
  • +2

    [.htaccess RewriteRule:同じサーバーとディレクトリを使用する2つのドメイン](http://stackoverflow.com/questions/6972413/htaccess-rewriterule-two-domains-using-same-server-and-directory)の複製が可能です。 –

    +0

    この設定はどうなりますか? 2番目のRewriteCondを削除すると( '^/index.php?lang = it'は決して一致しません)、REQUEST_URIはクエリパラメータを公開せず、代わりに%{QUERY_STRING}をチェックしますか? – nikoshr

    +0

    私は後者の灰色のブロックで多くのさまざまな "バージョン"のルールを試しました...私はいつもHTTP 500エラーまたは空の$ _GETを取得します。私は、第2の条件 "RewriteCond%{REQUEST_URI}!^/index.php?lang = it"の有無にかかわらず、他の試練の中で意味します。 –

    答えて

    21

    ローレンスCheroneを - 1は、魔法のように動作していること、ありがとうございます!今すぐ動作します:

    RewriteCond %{HTTP_HOST} ^www\.site1\.com [NC] 
    RewriteRule ^(.*)$ index.php?lang=it [NC,QSA] 
    RewriteCond %{HTTP_HOST} ^www\.site2\.com [NC] 
    RewriteRule ^(.*)$ index.php?lang=en [NC,QSA] 
    

    もちろん、私はこのルールの前にwwwのリダイレクトをチェックします。

    ありがとうございました!

    関連する問題