2009-08-05 11 views
7

Tengo un sitio que sirve cierto contenido basado en el subdominio. Por lo tanto, es el mismo conjunto de archivos, y tal vez el encabezado y cierta información en las páginas del sitio cambien en función del subdominio.¿Puedo hacer un if/then/else en htaccess?

Necesito tener una autenticación de htpassword diferente basada en el subdominio también, pero no puedo encontrar información sobre cómo hacer un tipo de cosas si/entonces en htaccess.

Básicamente lo que necesito es la siguiente:

si subdominio = 'abc' usan este archivo htpassword

si subdominio = 'def' usan este archivo htpassword

Puede hacerse esto?

Respuesta

3

Pruebe algo como esto:

SetEnvIf Host ^abc\. HOST_ABC 
SetEnvIf Host ^dev\. HOST_DEF 

<IfDefine HOST_ABC> 
    AuthUserFile … 
</IfDefine> 
<IfDefine HOST_DEF> 
    AuthUserFile … 
</IfDefine> 
+0

Esto se ve genial - Terminé teniendo que crear una auth simple en PHP debido a limitaciones de tiempo, pero me gustaría probar esto en un entorno de prueba, ya que parece tener sentido. ¡Gracias! – user151257

+5

tan encantador como parece, no funcionó para mí. ¿Revisarías este Gumbo? – Devrim

0

¿qué servidor web está utilizando?

una técnica que puede funcionar en varios servidores diferentes (sin duda funciona en apache) es tener un archivo .htaccess diferente en el directorio correspondiente a cada subdominio.

+0

Según la pregunta publicada, es el mismo conjunto de archivos, por lo que no hay direc por separado tories. – Amber

+0

Es un servidor Win 2003 que utiliza IIS con IISpassword e ISAPIrewrite3. Su solución no funcionará porque no hay conjuntos de archivos físicamente diferentes en el sistema de archivos para los subdominios: todos los subdominios apuntan al mismo conjunto de archivos y el PHP evalúa el subdominio y muestra diferentes datos basados ​​en eso. Gracias .. – user151257

0

Si fuera yo (y no he pensado en hacer esto antes) Me gustaría:

  1. utilizar una redirección interna utilizando mod_rewrite a diferentes raíz de los sitios (/ Suba o/Subb) en función de algunos factores (emulando IF/ELSE)
  2. uso enlaces simbólicos en el directorio público, pero no el .htaccess

manera:

/sites/subdomain_a/.htaccess 
/sites/subdomain_a/pub 
/sites/subdomain_b/.htaccess 
/sites/subdomain_b/pub 

donde

/sites/subdomain_a/pub == /sites/subdomain_b/pub 

usando

ln -s 

o similar. Luego use mod_rewrite para redirigir (internamente) a la raíz del sitio correcto. I piensa que mod_rewrite se ejecuta antes de que se cargue .htaccess.

Esto significa que está efectivamente publicando los mismos archivos de sitio con un .htaccess diferente según el subdominio.

Espero que esto ayude, un poco hack.

Estaría interesado en ver si algo mejor existe.

0

No se puede usar if/else porque htaccess no es una lista de instrucciones. Pero, si usa un bloque condicional como < IfModule mod_rewrite.c > o < IfDefine something >, puede usar diferentes directivas basadas en qué subdominio se solicita. No estoy seguro de cuál usaría ...

También podría poner uno.htaccess archiva un nivel sobre los archivos y usa < Directorio algo > para especificar reglas diferentes para cada subdominio, pero haz que todos los directorios de subdominios sean enlaces simbólicos al mismo directorio con los archivos compartidos.

por lo que este sería el directorio por encima de la raíz (s) web:
.htaccess
sitefiles
subdomain1 (enlace simbólico a sitefiles)
subdomain2 (enlace simbólico a sitefiles)
...

Cuestiones relacionadas