Виртуальные хосты на apache с подпапками вроде URL

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

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

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

  1. Я создал новый файл "demo" в / etc / apache2 / sites-available
  2. I put there this (actually it is copied with modifications from default file):

    <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.

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

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

Является ли это возможным? Спасибо :)


person Jibla    schedule 29.02.2012    source источник


Ответы (1)


Для начала, причина, по которой это происходит, заключается в ЛЮБОМ случае, потому что у вас есть настройка *: 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 Оба они будут отображаться как отдельные сайты.

person jeffchong07    schedule 29.02.2012
comment
Спасибо :) Я создал Псевдонимы и получил именно тот результат, которого хотел! Но для интереса: похоже, что таким способом виртуальные хосты сделать нельзя, не так ли? - person Jibla; 01.03.2012
comment
Я так не думаю, я никогда раньше так не пользовался. Обычно вы используете его, когда вам нужен один сервер, чтобы иметь возможность серверных файлов для нескольких доменов / IPS, например. www.vhost1.com и www.vhost2.com, а с помощью виртуального хоста сервер узнает, какие файлы передать на сервер www.vhost1.com и www.vhost2.com. - person jeffchong07; 01.03.2012
comment
в вашем случае есть только один домен, поэтому виртуальный хост не обязательно полезен для дифференциации ваших сайтов - person jeffchong07; 01.03.2012
comment
Спасибо, чувак :) Я получил то, что хотел, с псевдонимами;) - person Jibla; 01.03.2012
comment
Привет, ребята, а где именно вы должны поставить над строками? - person Super Engineer; 14.07.2013
comment
зависит от того, как у вас настроены ваши конфигурации. Если вы хотите сделать это на уровне сервера, вы можете добавить его в файл conf / httpd.conf, или вы можете поместить его в свой conf.d / vhost.conf (или как вы называете свой дополнительный файл конфигурации виртуального хоста) в конкретном виртуальный хост, вы тоже добавляете эти правила - person jeffchong07; 15.07.2013