Можно ли настроить Apache так, чтобы разные виртуальные хосты слушали один и тот же IP-адрес, один и тот же порт, так что определенные пути (не полный домен, только локальный путь) будут направлены на один виртуальный хост, а другие будут по умолчанию на другой ?
Например:
#All requests to www.mysite.com/special-url go here
<VirtualHost /special-url:80>
DefaultType application/x-httpd-php
ServerName server1
Document Root "/home/me/server1"
<Directory "/home/me/server1">
AllowOverride None
Order allow, deny
allow from all
</Directory>
</VirtualHost>
#All other requests go here
<VirtualHost *:80>
DefaultType application/x-httpd-php
ServerName server1
Document Root "/home/me/server2"
<Directory "/home/me/server2">
AllowOverride None
Order allow, deny
allow from all
</Directory>
</VirtualHost>
Эта конфигурация сервера не работает, как и добавление комбинаций подстановочных знаков к первому VirtualHost
тег (например, VirtualHost */special-url:80
). Вместо этого, когда я запускаю это, Apache направляет запросы на /special-url
к /home/me/server1
. Но если я ищу /foo
он все равно будет искать это в server1
и вернуться 404
даже если есть каталог с именем foo
в /home/me/server2
.
Есть ли способ иметь один VirtualHost только для определенных URL-адресов и другой VirtualHost для всех остальных URL-адресов?
Это не так. Виртуальный хост основан либо на IP-адресе, либо на имени хоста, а не на пути. Но есть еще несколько вещей, которые вы можете сделать для достижения той же цели:
server1
виртуальный хост имеет отдельное имя хоста, у вас может быть перенаправлениеAliasMatch
нанести на карту этот путьmod_rewrite
выполнить перезапись URL в соответствии с вашей спецификациейЯ не могу быть более конкретным, не зная больше о том, чего именно вы хотите достичь. Но я верю документация Apache по отображению URL-адресов в файловую систему даст вам хорошую отправную точку.
Похоже, это может быть работа для прокси-модуля Apache.
Ознакомьтесь с директивой ProxyPass:
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
Virtualhosts предназначены для обработки доменной части запроса, чтобы вы могли разместить несколько доменов на одном сервере.
вы могли бы что-то сделать с псевдонимом или переписать. или вы можете встроить разные URL-адреса в свое приложение и позволить ему разобраться с этим.