![Un VirtualHost para ciertas URL, otro VirtualHost para todas las demás URL en Apache](https://rvso.com/image/623651/Un%20VirtualHost%20para%20ciertas%20URL%2C%20otro%20VirtualHost%20para%20todas%20las%20dem%C3%A1s%20URL%20en%20Apache.png)
¿Es posible configurar Apache para que tenga diferentes hosts virtuales escuchando en la misma dirección IP y el mismo puerto, de modo que ciertas rutas (no el dominio completo, solo la ruta local) se dirijan a un host virtual y otras se dirijan de forma predeterminada al otro? ?
Por ejemplo:
#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>
Esta configuración del servidor no funciona, y tampoco lo hace agregar combinaciones de comodines a la primera VirtualHost
etiqueta (por ejemplo VirtualHost */special-url:80
, ). En cambio, cuando ejecuto esto, Apache dirige las solicitudes /special-url
a /home/me/server1
. Pero si busco, /foo
seguirá buscándolo server1
y regresará 404
incluso si hay un directorio foo
llamado /home/me/server2
.
¿Hay alguna forma de tener un VirtualHost solo para determinadas URL y otro VirtualHost para todas las demás URL?
Respuesta1
Así no es cómo funciona. Un host virtual se basa en la dirección IP o el nombre del host, no en la ruta. Pero hay algunas otras cosas que puedes hacer para lograr el mismo objetivo:
- Si el
server1
host virtual tiene un nombre de host separado, podría tener una redirección - Si todo lo que desea es ofrecer contenido desde una ruta diferente para esa URL, puede usar un
AliasMatch
para mapear esa ruta. - Podría utilizar
mod_rewrite
para reescribir una URL de acuerdo con sus especificaciones.
No puedo ser más específico sin saber más sobre qué es exactamente lo que quieres lograr. Pero yo creola documentación de Apache sobre cómo asignar URL al sistema de archivosle dará un buen punto de partida.
Respuesta2
Parece que esto podría ser un trabajo para el módulo proxy de Apache.
Consulte la directiva ProxyPass:
http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass
Respuesta3
Los servidores virtuales se ocupan de la parte del dominio de la solicitud para que pueda alojar varios dominios en el mismo servidor.
posiblemente podrías hacer algo con un alias o reescribir. o puede crear las diferentes URL en su aplicación y dejar que ella se encargue de ello.