El tema es este. Soy la encargada del desarrollo y mantenimiento de un portal pequeño. Por motivos de desarrollo y para facilitar la actualización y publicación de nuevas versiones, cada versión es alojada en un subdirectorio, y mediante .htaccess se dirige los requests hacia el directorio de la versión actual. Esto me facilita el actualizar/cambiar de versión, y tener una demo de las nuevas versiones antes de publicarlas.
El asunto es que el dueño de la página desea también poder ver los contenidos antes de su publicación, y por un tiempo hasta ahora lo que hacía era crear reglas específicas y ponerle como condición su ip (y obviamente la mía también), así ambos podríamos ver el sitio demo mientras que públicamente era la versión estable la publicada.
El problema es que su ip cambia constantemente, así que todo el tiempo me pide habilitar acceso a otra ip y debo hacer el cambio en el archivo .htaccess.
He pensado en manejar esto mediante autenticación HTTP, si el usuario X está autenticado en el servidor, hacer que los requests se dirijan a /sitio/version_2_0b por ejemplo, y si no, que lo hagan a /sitio/version_1_4. La idea central era, por ejemplo, teniendo el dominio http://www.sitio.com/, hacer que si cualquier usuario entraba a esa url o cualquier subpágina dentro de esa url, vea el sitio publicado, pero si el usuario entra por ejemplo a http://www.sitio.com/?preview2_0b pues se le solicite clave y contraseña (Que las tendría guardadas en un archivo .htpasswd), y si las introduce correctamente sus requests empiecen a ser apuntados hacia la versión demo.
Lo que tengo es esto:
Código Apache:
Ver original
# Lo hago así porque de la forma tradicional SetEnvIf, no puedo tomar como condición el valor del Query String RewriteCond %{QUERY_STRING} preview2_0b # Si la url de acceso tiene ese query string, variable de entorno accederdemo RewriteRule (.*) - [E=accederdemo:1] # Solicitar autenticación si se ha seteado la variable de entorno accederdemo AuthType Basic AuthName "Demo Preview" AuthUserFile "home/pass/.htpasswd" Require valid-user Order allow,deny Allow from all Deny from env=accederdemo Satisfy any # Reglas de Mod_Rewrite # Acceso BETA : Uso la variable %{REMOTE_USER} que debería contener el usuario autenticado RewriteCond %{REMOTE_USER} demo_user RewriteCond %{REQUEST_URI} !^/site/version_2_0b RewriteRule ^(.*)$ /site/version_2_0b/$1 [L] # Acceso PUBLICO RewriteCond %{REQUEST_URI} !^/site/version_1_4 RewriteRule ^(.*)$ /site/version_1_4/$1 [L]
No funciona. Accediendo a la url con el query string indicado, nunca se solicita el acceso con password y se ejecutan las segundas reglas (públicas).
Para probar, he intentado setear la variable con
Código:
antes de la autenticación. En este caso, sí me solicita el usuario y contraseña al entrar a www.sitio.com, pero igual se ejecutan siempre las segundas reglas.SetEnvIf Host sitio\.com accederdemo
Gracias por adelantado.