Виртуальные хосты на apache с URL-адресами, как подпапки - PullRequest
13 голосов
/ 29 февраля 2012

Меня интересует, могу ли я иметь vhosts на apache с такими доменными именами, как: http://something.com/something или http://{server -ip-address-here} / что-то ?

Я использую Apache 2.2.20 на Ubuntu Server, это мой домашний сервер, и я здесь кое-что тестирую, у меня здесь нет DNS-сервера, и у меня есть только публичный IP-адрес и доменное имя, присоединенное к нему из открытогоdns service.

Итак, что я сделал:

  1. Я создал новый файл "demo" в / etc / apache2 / sites-available
  2. Я положил туда это (на самом деле это скопировано с изменениями из файла по умолчанию): </p> <pre><code><VirtualHost *:80> ServerAdmin webmaster@localhost ServerName {mydomain-here}/demo/ DocumentRoot /vhosts/demo <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /vhosts/demo/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /doc/ "/usr/share/doc/" <Directory "/usr/share/doc/"> Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 </Directory> </VirtualHost>

  3. Создана символическая ссылка в/ etc / apache2 / sites-enabled / указывает на файл / etc / apache2 / sites-available / demo

  4. Создан файл / vhosts / demo / index.html .

И теперь я получаю следующее: когда я захожу на {мой-домен}, я захожу на созданный мною vhost, но проблема в том, что сервер указывает на меня в ЛЮБОМ случае,неonly {my-domain} / demo, что я хочу.

В заключение я хочу, чтобы я мог создавать разные виртуальные хосты и привязывать их к разным URL-адресам, которые будут иметь одинаковый базовый URL-адрес, например www.mydomain.com / vhost1, www.mydomain.com/vhost2 и т. д.

Возможно ли это?Спасибо:)

1 Ответ

16 голосов
/ 01 марта 2012

Для начала, причина, по которой это происходит, ЛЮБОЙ случай, потому что у вас есть настройка *: 80 для вашего виртуального хоста, поэтому, если ничего не соответствует запросу, используется первая запись виртуального хоста

Если я понимаю, что вы пытаетесь сделать, похоже, что вы просто хотите присвоить псевдоним каждому «виртуальному хосту»

То, что вы пытаетесь сделать, это не совсем виртуальный хост (по крайней мере, то, что должен делать виртуальный хост), но вы можете сделать это, используя функцию псевдонима apache

Alias /vhost1 /whatever/folder/your/vhost1/site/is/at
Alias /vhost2 /whatever/folder/your/vhost2/site/is/at

Итак, какой бы домен вы ни использовали, например, http://whatever.com/vhost1 или http://whatever.com/vhost2 Оба они будут отображаться как отдельные сайты

...