En éstos días he estado trabajo en redirecciones en las que tenía que mantener la url de un subdominio en la barra de navegación mientras que internamente se solicita información de otra url.
Lo explico con un ejemplo. Solicitemos la siguiente url, que es un subdominio, php.pedroventura.com, desde la cual internamente se está obteniendo la información de www.pedroventura.com/php/. También se puede hacer para obtener contenido desde otros servidores.
En apache esto se consigue con mod_rewrite, mod_proxy y mod_proxy_http. Cuando se crean las reglas de redirección hay que agregar el flag [P]. Mediante este flag mod_rewrite habilita el paso de urls, vía mod_proxy a otro servidor o a sí mismo.
Habilitar mod_proxy
– En distribuciones tipo Ubuntu:
[code]
sudo a2enmod proxy
sudo a2enmod proxy_http
[/code]
– En distribuciones tipo RedHat:
En el archivo de configuración de apache /etc/httpd/conf/httpd.conf
Comprueba que las siguientes lineas están descomentadas
[code]
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
[/code]
Configuración del módulo de proxy
Esta es la configuración que tengo en mi servidor de desarrollo
[email protected]:/home/pedro# cat /etc/apache2/mods-enabled/proxy.conf
[code]
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Order deny,allow
Deny from all
Allow from localhost
</Proxy>
ProxyVia On
</IfModule>
[/code]
Ejemplo de reglas de redirección en htaccess
Esta regla es para redireccionar cualquier subdominio que no sea www
[code]
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.pedroventura\.com$
RewriteCond %{HTTP_HOST} ^(.*)\.pedroventura\.com$
RewriteRule ^$ /index.php?id=%1 [P,L]
[/code]
Si quieres crear una agrupación de subdominios específicos tienes que crear la expresión regular específica
[code]
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(subdominioA|subdominoB|subdominioC).pedroventura\.com$
RewriteRule ^$ /index.php?id=%1 [P,L]
[/code]
Fuentes y Lecturas recomendadas:
- Using mod_rewrite for Proxying
- load mod_proxy and mod_proxy_http modules of apache in centos
- setting up a basic mod_proxy virtual host
- Need to show subdomain as url than the directory path
- Redirect But Not Show The URL redirec :: htaccess?
- htaccess, redirect virtual subdomain to URL parameter
Muy buenas tardes Pedro, solo quería comentarte que me encanta tu página web. Tus contenidos sobre servidores me parecen muy útiles . Yo suelo trabajar en temáticas del estilo.
Has ganado un asiduo seguidor de tus artículos.
Un saludo.