Рассмотрим возможность перехода по имени в различные каталоги с помощью модуля mod_rewrite.
Этот модуль уже установлен, нуждается только в активации
sudo a2enmod rewrite и в нашем случае правке конфига апач следующим образом:
sudo gedit /etc/apache2/sites-available/000-default.confдобавляем в конец файла
<Directory "/var/www/html">
AllowOverride All
</Directory>
теперь рестартанем апач
sudo service apache2 restart
Здесь все, теперь предполагаем что у нас (для примера) 2 личных записи в /etc/hosts
127.0.1.1 test mysite (формат записи:
адрес имя псевдоним и псевдонимов может быть столько, сколько вам надо. Потому хотите заводите новые строки, хотите пишите в ряд, и то и другое верно, но для одной сущности плодить новые адреса как то кривовато по моему мнению.)
в root директории apache 2 каталога с разными сайтами:
/var/www/html/test /var/www/html/dir2
в дальнейшем будем переходить в них по именам test и mysite соответственно, (второе имя dir2 сделал таким для наглядности что оно не совпадает с mysite)
для этого в /var/www/html создаем файл .htaccess
со следующим содержимым:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^test$ [OR]
RewriteCond %{HTTP_HOST} ^www\.test$
RewriteRule ^/?$ "http\:\/\/test\/test" [R=301,L]
RewriteCond %{HTTP_HOST} ^mysite$ [OR]
RewriteCond %{HTTP_HOST} ^www\.mysite$
RewriteRule ^/?$ "http\:\/\/mysite\/dir2" [R=301,L]
Собственно и все, браузер при попытке обработать запрос test на основании записи в hosts попадает на локальный сервер в корневую директорию, читает правило
для test (вторая строка для
www.test) и переадресовывается в третьей строке в директорию test.
Естественно в строке RewriteRule ^/?$ "http\:\/\/
test\/test" [R=301,L] выделенное имя означает адрес нашего локального адреса и потому может быть любым валидным для него, то есть: localhost 127.0.0.1. 127.1.1.1 test mysite всем чем мы себя обозвали в hosts
а второе это директория куда переходим. Аналогично на втором примере.
Набираем test попадаем в /var/www/html/test
Набираем mysite попадаем /var/www/html/dir2