![Ein VirtualHost für bestimmte URLs, ein anderer VirtualHost für alle anderen URLs in Apache](https://rvso.com/image/623651/Ein%20VirtualHost%20f%C3%BCr%20bestimmte%20URLs%2C%20ein%20anderer%20VirtualHost%20f%C3%BCr%20alle%20anderen%20URLs%20in%20Apache.png)
Ist es möglich, Apache so zu konfigurieren, dass verschiedene virtuelle Hosts auf derselben IP-Adresse und demselben Port lauschen, sodass bestimmte Pfade (nicht die vollständige Domäne, nur der lokale Pfad) zu einem virtuellen Host und andere standardmäßig zu dem anderen Host verweisen?
Zum Beispiel:
#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>
Diese Serverkonfiguration funktioniert nicht und das Hinzufügen von Platzhalterkombinationen zum ersten VirtualHost
Tag (z. B. VirtualHost */special-url:80
) funktioniert auch nicht. Wenn ich dies ausführe, leitet Apache Anfragen stattdessen an /special-url
weiter /home/me/server1
. Wenn ich jedoch nach suche , /foo
wird es trotzdem nach in suchen server1
und zurückgeben, selbst wenn ein Verzeichnis mit dem Namen in 404
vorhanden ist .foo
/home/me/server2
Gibt es eine Möglichkeit, einen VirtualHost nur für bestimmte URLs und einen anderen VirtualHost für alle anderen URLs zu haben?
Antwort1
So funktioniert es nicht. Ein virtueller Host basiert entweder auf der IP-Adresse oder dem Hostnamen, nicht auf dem Pfad. Aber es gibt noch ein paar andere Dinge, die Sie tun können, um dasselbe Ziel zu erreichen:
- Wenn der
server1
virtuelle Host einen separaten Hostnamen hat, können Sie eine Umleitung einrichten - Wenn Sie lediglich Inhalte von einem anderen Pfad für diese URL bereitstellen möchten, können Sie
AliasMatch
diesen Pfad mit einem abbilden. - Sie können
mod_rewrite
eine URL-Umschreibung gemäß Ihren Vorgaben durchführen
Ich kann nicht genauer darauf eingehen, ohne mehr darüber zu wissen, was Sie genau erreichen wollen. Aber ich glaubedie Apache-Dokumentation zum Zuordnen von URLs zum Dateisystemgibt Ihnen einen guten Ausgangspunkt.
Antwort2
Klingt, als ob dies ein Job für das Proxy-Modul von Apache sein könnte.
Schauen Sie sich die ProxyPass-Anweisung an:
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
Antwort3
Virtuelle Hosts dienen zur Verarbeitung des Domänenteils der Anforderung, sodass Sie mehrere Domänen auf demselben Server hosten können.
Sie könnten möglicherweise etwas mit einem Alias oder einer Umschreibung tun. Oder Sie könnten die verschiedenen URLs in Ihre App einbauen und sie damit umgehen lassen.