*AMP を実行している場合に行う最善の方法は、Thomas が提案することを実行し、Apache で仮想ホストを実行することです。説明したリダイレクトの有無にかかわらず、これを行うことができます。
仮想ホスト
ほとんどの場合、設定が最も簡単で IP アドレスが 1 つしか必要ないため、名前ベースの仮想ホストを使用することをお勧めします (したがって、ローカル MAMP マシンでの設定とテストも簡単です)。IP ベースの仮想ホストは他のいくつかの点で優れていますが、ドメインごとに IP アドレスが必要です。
このウィキペディアのページでは、名前ベースの仮想ホストを実行する方法の違いと、基本的なチュートリアルへのリンクについて説明しています。
テスト用のローカル マシンでは、偽のテスト ドメイン名用に /etc/hosts に偽の DNS 名を設定する必要もあります。つまり、localhost でリッスンする Apache があり、Apache 構成で vhost1.test.domain と vhost2.test.domain をセットアップする場合、これらのドメインを localhost の後に /etc/hosts の 127.0.0.1 行に追加するだけです。
127.0.0.1 localhost vhost1.test.domain vhost2.test.domain
/etc/hosts の編集を完了し、名前ベースの仮想ホスト構成を Apache 構成ファイルに追加したら、それだけです。Apache を再起動すると、テスト ドメインが機能するはずです。
mod_rewrite でリダイレクト
mod_rewrite を使用してリダイレクトを行う場合 (user.example.com が直接ホストされず、代わりに example.com/user にリダイレクトされるようにするため)、サブドメインと一致するように RewriteCond を実行してリダイレクトする必要もあります。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com
RewriteRule ^(.*)$ http://example.com/subdomain$1 [R]
これを .htaccess またはメインの Apache 構成に入れることができます。
リダイレクトするサブドメインごとに、最後の 2 つのようなルールのペアを追加する必要があります。または、RewriteCond でサブドメインをキャプチャして、ワイルドカード ルールを 1 つ使用して *.example.com を example.com/ * にリダイレクトできるようにすることもできますが、セキュリティの観点からは、それは非常に悪いにおいがします。
すべて一緒に、仮想ホストとリダイレクト
リッスンするホスト名ごとに、より明示的に仮想ホスト構成セクションを設定し、これらの各ホスト名の書き換えルールを仮想ホスト構成内に配置することをお勧めします。(この種のものを .htaccess ではなく Apache 構成内に配置する方が、常により安全で高速です。.htaccess はパフォーマンスを低下させます。これは、Apache が常にファイルシステムで .htaccess ファイルを探して再解析しているためです。これらはユーザーによって台無しにされる可能性があるため、安全性が低くなります。)
このようにすべてをまとめると、Apache 構成内の vhost 構成は次のようになります。
NameVirtualHost 127.0.0.1:80
# Your "default" configuration must go first
<VirtualHost 127.0.0.1:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /www/siteroot
# etc.
</VirtualHost>
# First subdomain you want to redirect
<VirtualHost 127.0.0.1:80>
ServerName vhost1.example.com
RewriteEngine On
RewriteRule ^(.*)$ http://example.com/vhost1$1 [R]
</VirtualHost>
# Second subdomain you want to redirect
<VirtualHost 127.0.0.1:80>
ServerName vhost2.example.com
RewriteEngine On
RewriteRule ^(.*)$ http://example.com/vhost2$1 [R]
</VirtualHost>