2011-07-20 17 views
0

私はここでhtaccessフォルダの書き換えについて複数の投稿を読んできましたが、いずれも私の質問に合っていないようです。htaccessフォルダの書き換え

私の質問は:

私は、サーバー、WEBSITE1とWEBSITE2上の2つのサブフォルダを持っています。

ユーザーがwww.foo.comになると私はその後、場合にのみ、同じことをしたいと同じままに視覚的なURLを望むが、サーバURIはそれがWEBSITE1

のためのindex.phpをロードします/website1/に行きたいですユーザーはwww.bar.comに再度アクセスしますが、URLは変更されませんが、今度は/website2/にリンクして、2番目のWebサイトのindex.phpをロードします。

私はまだ書き直しについて学んでいるので、これについての助けに本当に感謝します。説明付きの例は高く評価されます。また、ベストプラクティスのアドバイス(もしあれば)も高く評価されます。

+1

、書き換えません。 – KingCrunch

答えて

0

KingCrunchが正しい - そのような環境を設定する適切な方法は、Apacheコンフィグファイルで<VirtualHost>ディレクティブを使用することです。

何らかの理由でこれはリライトと.htaccess経由ドナにする必要があり、場合...あなたは有効にするmod_rewriteのと書き換えルール(AllowOverrideディレクティブ)を含有させることにする.htaccessファイルを必要としています。ここで

ルールは以下のとおりです。

Options +FollowSymLinks -MultiViews 
RewriteEngine On 
RewriteBase/

# rule #1 
RewriteCond %{HTTP_HOST} =www.foo.com 
RewriteCond %{REQUEST_URI} !^/website1/ 
RewriteRule (.*) /website1/$1 [L] 

# rule #2 
RewriteCond %{HTTP_HOST} =www.bar.com 
RewriteCond %{REQUEST_URI} !^/website2/ 
RewriteRule (.*) /website2/$1 [L] 

このコードでは、ルートフォルダに.htaccessファイルに配置することです。他の場所(例えば、設定や仮想ホストのコンテキスト)に配置すると、いくつかの調整が必要になることがあります。

フィストルールはwww.foo.comで、もう1つは別のドメイン名です。これらのルールはほとんど同じです。 Apacheにドメイン名を確認させ({HTTP_HOST}リクエスト変数経由)、ドメイン書き換え(内部リダイレクト)URLが1つのフォルダーに深く一致するかどうかを確認します。 2番目の条件は、書き換えループを防止することです(既に書き換えられたURLを書き換えないようにする)。 Apacheは、リライトを実行した後、次のリライト反復(つまり動作する方法)に進みます。ループを停止するにはこの条件が必要です。

便利なリンク:あなたはバーチャルホストを探しているhttp://httpd.apache.org/docs/current/rewrite/

+0

ありがとうございました。これはうまくいった。誰もがそれに対してアドバイスしたように、私は共有ホスティングをリセラーに変更して、より簡単に生活を楽しめるようにしました。あなたの貢献のためにすべてのことをやってください – fl3x7