2009-04-22 7 views
5

(少なくとも、それがボーダーラインであるので、私はこれはそれ自体がプログラミングの質問ではないですけど、それは正規表現を必要とする...)Apacheとmod_rewriteの:

セットアップをサブディレクトリにドメインをリダイレクト:

Windows上でmod_rewriteを使用したApache 2.0 2つのドメイン、domain1.exampleとdomain2.exampleという名前にしましょう。私は両方のドメインを同じサーバー( "server1")にホストしたいので、同じIPアドレスを指しています。

ユーザーがブラウザに "domain2.example"と入力した場合、サーバー上のサブディレクトリ**になりますが、入力したドメインはそのまま残しておきます( "domain2.example/domain2 /" )。リダイレクトでは、もちろんこのドメイン/ディレクトリ下のページのすべての絶対リンクと相対リンクはそのまま残す必要があります。

これはmod_rewrite(またはApache仮想ホストなど)で可能ですか?どのようにすればいいですか?

** "サブディレクトリ"は実際にはディスク上のファイルフォルダではなく、Apacheの "Location"ディレクティブで作成された仮想フォルダです。

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

答えて

2

私はあなたがmod_rewriteを使う必要があるとは思わないが、提案するようにこれに仮想ホストを使用できるはずです。これを行うには、目的のディレクトリを指し示すservername domain2.exampleという単一の仮想ホストが必要です。これは、domain1.exampleにServerAliasディレクティブを使用して、これに対する要求が同じディレクトリに移動するようにします。

ServerAliasDocumentRootのドキュメントを参照してください。また、ディレクトリにURLを表示する場合は、にmod_rewriteを使用する必要があります。

3

ドメインが独立していると仮定すると、推奨ソリューションは仮想ホストです。

apache websiteにドキュメントがあります。

+0

DocumentRootディレクティブは、(バーチャルホストでの意志に行くだろう設定セクション)は、実際には "場所"で、サーバー上の物理的なファイルフォルダではない "サブディレクトリ"に転送しますか? – ObiWanKenobi

+0

ファイルフォルダではなく、場所はどういう意味ですか?あなたはindex.html/index.php/index.cgiをどこかに持っていて、DocumentRootをそのファイルが置かれているフォルダに置くと思います。 –

+0

"Location"とは、http://httpd.apacheです。 org/docs/2.0/mod/core.html#location 具体的には、SetHandlerディレクティブと組み合わせて使用​​します。http://httpd.apache.org/docs/2.0/mod/core.html#sethandler したがって、物理ファイル(index.htm、index.php、何でも)ではなく、 "ハンドラ"(pls_handler、つまり、私の場合はmod_plsql)への転送です。 – ObiWanKenobi

6

あなたはApacheの設定にアクセスできないと思っています。そうしないと、仮想ホストが最適です。あなたが、しかし、これは、.htaccessファイルに入れることができないし、トリックを行う必要がある場合:

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(.+)\.yourwebsite\.com$ 
RewriteRule ^/(.*)$ /path/to/your/subdomains/%1/$1 [L] 

のでhttp://foo.yourwebsite.com/barへの要求は、/path/to/your/subdomains/foo/bar

関連する問題