Лучше всего, если вы работаете * AMP - это делать то, что предлагает Томас, и делать виртуальные хосты в Apache. Вы можете сделать это с описанным вами перенаправлением или без него.
Виртуальные хосты
Скорее всего, вы захотите сделать виртуальных хостов на основе имен , так как это проще всего настроить и требует только один IP-адрес (так что его также легко установить и протестировать на локальном компьютере MAMP). ). Виртуальные хосты на основе IP лучше в некоторых других отношениях, но вам необходимо иметь IP-адрес для каждого домена.
На этой странице Википедии обсуждаются различия и ссылки на хороший базовый краткий обзор того, как делать именные vhosts, в нижней части.
На вашем локальном компьютере для тестирования вам также потребуется настроить поддельные DNS-имена в / etc / hosts для ваших поддельных тестовых доменных имен. т. е. если у вас Apache прослушивает localhost и настраивает vhost1.test.domain и vhost2.test.domain в ваших конфигах Apache, вы просто добавляете эти домены в строку 127.0.0.1 в / etc / hosts после localhost:
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.
Вам нужно будет добавить пару правил, например последние два, для каждого субдомена, который вы хотите перенаправить. Или вы можете захватить поддомен в RewriteCond, чтобы использовать одно правило подстановочного знака для перенаправления * .example.com на example.com/.
* - но это пахнет очень плохо для меня с точки зрения безопасности.
Все вместе, vhosts и редирект
Лучше быть более явным и настроить раздел конфигурации виртуального хоста для каждого имени хоста, которое вы хотите прослушивать, и поместить правила перезаписи для каждого из этих имен хоста в его конфигурацию виртуального хоста. (Всегда безопаснее и быстрее помещать подобные вещи в конфигурацию Apache, а не .htaccess, если вы можете помочь - .htaccess снижает производительность, потому что Apache постоянно ищет файловую систему для файлов .htaccess и анализирует их, и это менее безопасно, потому что они могут быть испорчены пользователями.)
Все вместе, вот так, конфигурация vhost внутри ваших конфигов Apache будет:
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>