Estoy tratando de escribir un conjunto de reglas mod_rewrite que permiten a mis usuarios utilizar una sola carpeta para desarrollar en diferentes proyectos, y no tener que meterse con agregar fantasmas para cada proyecto individual.Apache mod_rewrite un subdominio a una subcarpeta (a través de redirección interna)
Mi idea para lograr esto, es configurar un "Global VHost" para cada usuario que necesita esta capacidad (solo 3-4), el vhost sería algo así como: .my-domain.com. Desde allí, quiero promocionar a mis usuarios para que escriban código como si estuviera en un dominio y no en una subcarpeta. Por ejemplo, si bob estaba trabajando en un proyecto llamado 'gnome', me gustaría que la URL bob (y cualquier otra persona en nuestra red interna) cargue para llegar a este proyecto: http://gnome.bob.my-domain.com. Pero, lo que me gustaría que Apache hiciera, es reconocer que "gnome" es un "proyecto" y así mapear la solicitud, internamente, a bob.my-domain.com/gnome/.
Tengo lo que pensé que funcionaría, y es bastante simple, pero ... ¡no funciona! La solicitud simplemente entra en un ciclo infinito y mantiene el prefijo del subdominio en el URI de solicitud reescrito.
El código de reescritura mod que tengo es:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+)\.bob\.my-domain\.com
RewriteCond %{REQUEST_URI} !^/%1.*
RewriteRule ^(.*)$ /%1/$1 [L]
Googled alrededor de un poco sobre esto, pero todavía tengo que encontrar soluciones reales que funcionan. Alguien ha intentado esto - o tal vez, ¿alguien tiene una mejor idea? Uno que no implique hacer un host virtual para cada proyecto (tengo diseñadores ... Creo que todos estarían de acuerdo en que un diseñador no debería crear hosts virtuales ...)
¡Gracias!
Aquí hay un fragmento de la rewrite_log:
[rid#838dc88/initial] (3) [perdir /home/bob/http/] strip per-dir prefix: /home/bob/http/index.html -> index.html
[rid#838dc88/initial] (3) [perdir /home/bob/http/] applying pattern '^(.*)$' to uri 'index.html'
[rid#838dc88/initial] (4) [perdir /home/bob/http/] RewriteCond: input='gnome.bob.my-domain.com' pattern='^([^.]+)\.bob\.my-domain\.com' => matched
[rid#838dc88/initial] (4) [perdir /home/bob/http/] RewriteCond: input='/index.html' pattern='!^/%1.*' => matched
[rid#838dc88/initial] (2) [perdir /home/bob/http/] rewrite 'index.html' -> '/gnome/index.html'
[rid#838dc88/initial] (1) [perdir /home/bob/http/] internal redirect with /gnome/index.html [INTERNAL REDIRECT]
[rid#8392f30/initial/redir#1] (3) [perdir /home/bob/http/] strip per-dir prefix: /home/bob/http/gnome/index.html -> gnome/index.html
[rid#8392f30/initial/redir#1] (3) [perdir /home/bob/http/] applying pattern '^(.*)$' to uri 'gnome/index.html'
[rid#8392f30/initial/redir#1] (4) [perdir /home/bob/http/] RewriteCond: input='gnome.bob.my-domain.com' pattern='^([^\.]+)\.bob\.my-domain\.com' => matched
[rid#8392f30/initial/redir#1] (4) [perdir /home/bob/http/] RewriteCond: input='/gnome/index.html' pattern='!^/%1.*' => matched
[rid#8392f30/initial/redir#1] (2) [perdir /home/bob/http/] rewrite 'gnome/index.html' -> '/gnome/gnome/index.html'
[rid#8392f30/initial/redir#1] (1) [perdir /home/bob/http/] internal redirect with /gnome/gnome/index.html [INTERNAL REDIRECT]
[rid#8397970/initial/redir#2] (3) [perdir /home/bob/http/] add path info postfix: /home/bob/http/gnome/gnome -> /home/bob/http/gnome/gnome/index.html
Esto es sólo un fragmento, hay algunos 10 o 100 o más líneas de Apache reescritura básicamente a /gnome/index.html/gnome/gnome /gnome/gnome/gnome/index.html, etc antes de Apache llega a su límite de reescritura, se da por vencido, y tiros de error 500
Agregué más información de los registros de reescritura, espero que alguien haya intentado esto antes, o tiene alguna información sobre cómo puedo hacer esto. Gracias chicos (y chicas) –