Най-доброто нещо, което можете да направите, ако използвате *AMP, е да направите това, което Томас предлага и да направите виртуални хостове в Apache. Можете да направите това със или без пренасочването, което описвате.
Виртуални хостове
Най-вероятно ще искате да направите базирани на имена виртуални хостове, тъй като е най-лесният за настройка и изисква само един IP адрес (така че ще бъде лесен за настройка и тестване на вашата локална MAMP машина). Базираните на IP виртуални хостове са по-добри в някои други отношения, но трябва да имате IP адрес за всеки домейн.
Тази страница в Уикипедия обсъжда разликите и връзки към добра основна стъпка за това как да направите name- базирани 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>
person
joelhardi
schedule
17.09.2008