Итак, мы попытаемся почистить вещи: -)
Избегайте использования .htaccess. Все настройки в .htaccess в каталоге / foo / bar могут быть установлены в конфигурации apache в качестве параметра каталога (.haccess полезен, если вы предоставляете ограниченный доступ к apache conf, если у вас есть сервер, не используйте его).
<Directory /foo/bar>(...)</Directory>
Затем вы можете получить доступ к своим сайтам с помощью именованных виртуальных хостов. Убедитесь, что у вас есть эта опция:
NameVirtualHost *:80
Когда у вас есть хорошие вещи могут начаться.
Это будет ваш виртуальный хост для вашего первого приложения:
<VirtualHost *:80>
ServerName app
ServerAlias www.app.somwhere.com
ServerAlias app.somwhere.com
DocumentRoot /www/app/webroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /www/app/webroot>
Options Indexes FollowSymLinks
# this prevent.htaccess reading, remove if you want .htaccess
AllowOverride None
# allow web access
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Большинство настроек apache можно определить здесь. Только для вашего первого приложения. Apache будет обслуживать эту конфигурацию для всех запросов, выполненных для имени сайта «app», или «www.app.somwhere.com», или «app.somwhere.com». Вы можете определить много псевдонимов ( ServerAlias ). И только одно имя ( ServerName ).
Затем, если вы зайдете в браузер и введете http://app/, ваш браузер не найдет сервер, поэтому установите его в вашем / etc / hosts. Это то, что каждый, кто хочет получить доступ к вашему приложению, должен иметь в файле hosts, пока вы не получите реальный DNS (при условии, что ваше первое приложение - app.somwhere.com, а второе foo.somwhere.com и 92.128.52.226 - ваш внешний IP) :
127.0.0.1 app.somwhere.com app foo foo.somewhere.com
92.128.52.226 app.somwhere.com app foo foo.somewhere.com
А теперь давайте добавим еще один виртуальный хост для вашего второго приложения:
<VirtualHost *:80>
ServerName foo
ServerAlias www.foo.somwhere.com
ServerAlias foo.somwhere.com
DocumentRoot /www/foo/webroot
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /www/foo/webroot>
Options Indexes FollowSymLinks
# this prevent.htaccess reading, remove if you want .htaccess
AllowOverride None
# allow web access
Order allow,deny
allow from all
</Directory>
</VirtualHost>
и т. Д.
Не забудьте перезапустить свой Apache. Нет правила перезаписи. Хорошие виртуальные хосты - это первый шаг хорошей конфигурации, вы сможете определять правила, каталог или местоположение для каждого используемого имени. Даже php-конфигурация может быть установлена для каждого виртуального хоста с помощью php_value вместо глобального общего доступа на php.ini.
тип
apache2 -S
чтобы получить список ваших виртуальных хостов, вы увидите, что первый - «по умолчанию», если apache не понимает имя запрошенного сайта, он будет обслуживать этот по умолчанию (так что вы можете конкретный виртуальный хост сверху для обработки этих случаев).