Конфигурация Apache httpd VirtualHost - несколько сайтов

[Рекомендуется размещать здесь сообщения от StackExchange]

У меня есть сайт для работы, потому что из-за способа построения URL-адресов приложение, кажется, было создано при условии, что оно будет находиться в корневом каталоге сервера (только приложение).

На моем dev-сервере у меня есть другие проекты, и до сих пор у меня работала простая символическая ссылка, но сейчас это не так, потому что это новое приложение хочет сидеть на маршруте и обрабатывать все поступающие URL-адреса:80.

Надеюсь, этот фрагмент из httpd.conf поможет объяснить, что я пытаюсь получить:

# default for any not matched elsewhere
<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/html/newproject
</VirtualHost>
# now try to pick out specific URLs
<VirtualHost localhost/webdev>
  DocumentRoot /var/www/html/existingProject
  ServerName localhost/project
</VirtualHost>

Также необходимо иметь возможность получить тот же эффект от того, откуда я получаю доступ к экземпляру httpd. Надеюсь, что это имеет смысл.

2 ответа

Вам не нужно использовать VirtualHosts (на самом деле, я не думаю, что это будет работать в том формате, который у вас есть), вам просто нужно простое Alias (от mod_alias).

В существующей VirtualHost директива, создать Alias чтобы /newproject направлен на /somepath/here/newproject, как это,

Alias /newproject/ /where/it/really/lives/

Тогда любая ссылка, которую получает сервер /newproject/ на самом деле будет тайно и тихо переведен на /where/it/really/lives/,

Если вы хотите использовать /webdev в качестве подпапки для другого приложения, просто добавьте "Alias ​​/webdev /var/www/html/ существующие Project" на первый виртуальный хост и удалите второй.

# default for any not matched elsewhere
<VirtualHost *:80>
  ServerName localhost
  DocumentRoot /var/www/html/newproject
  Alias /webdev /var/www/html/existingProject
</VirtualHost>

And browse for http://localhost/ and http://localhost/webdev/

Если вам нужно добавить другой домен, то:

NameVirtualHost 127.0.0.1
<VirtualHost 127.0.0.1:80>
  ServerName test.local
  DocumentRoot /var/www/html/existingProject
</VirtualHost>

И в /etc/hosts вы добавляете:

127.0.0.1 test.local

And you browse http://test.local/ and http://localhost/
Другие вопросы по тегам