.htaccess - Bloques de código específicos del nombre de dominio en htaccess
(3)
Debes hacer esto en tu sitio con el archivo conf:
<VirtualHost domain.com:80>
...config statements here
</VirtualHost>
y
<VirtualHost domain2.com:80>
....config statements here
</VirtualHost>
Si está con un host que no le permite editar el archivo de configuración de su sitio, lo cual es una posibilidad real si está con un host compartido, entonces debería considerar VPS o hosting dedicado.
Tenemos servidores locales, servidores centrales, servidores de producción y de puesta en escena. Sin embargo, el desarrollo y la puesta en escena están protegidos por contraseña por razones obvias. Entonces, después de implementar cualquier cambio en htaccess, tengo que editar manualmente el archivo htaccess para habilitar la protección de contraseña en el servidor de desarrollo y de desarrollo.
¿Hay alguna manera de tener bloques condicionales basados en nombres de dominio como:
if ( $domain == "dev.example.com" || $domain == "staging.example.com" ){
AuthName "Password Protected Area"
AuthType Basic
AuthUserFile /somewhere/.htpasswd
Require valid-user
}
Necesito encontrar el equivalente htaccess de la condición:
if ( $domain == "dev.example.com" || $domain == "staging.example.com" ){
}
Agradecería cualquier ayuda o consejos que puedan dar.
Encontré una buena solución para distinguir "localhost" frente a "live":
Dado que los condicionales de htaccess son un tanto limitados, ¿por qué no conformarse con IfModule ?: Compare los módulos que tiene (es decir, use y busque una diferencia significativa a largo plazo, por ejemplo, si se desarrolla en windows y se implementa en linux mod_win32.c podría sé bueno. (No olvides agregar el .c que omite phpinfo ()).
Entonces puedes hacerlo de esta manera (probado):
<IfModule mod_win32.c>
RewriteRule ^banana$ test.php?dudeThisIsLocal=1
</IfModule>
<IfModule !mod_win32.c>
RewriteRule ^banana$ test.php?dudeThisIsLive=1
</IfModule>
Este ejemplo lo convierte en una buena prueba de cordura, que cede a su resp. localhost / banana y si (habiendo reescrito habilitado) vuelca la matriz $ _GET en test.php. Si esto funciona, rellene las bifurcaciones de código con sus declaraciones de configuración real.
Si bien hacerlo a través de VirtualHost y no un .htaccess es mucho mejor, puede usar la siguiente solución si el módulo setenvif está activo:
SetEnvIf Host ^dev/.site/.com$ is_on_dev_site
SetEnvIf Host ^staging/.site/.com$ is_on_dev_site
Order deny,allow
Deny from env=is_on_dev_site
# require password if access would otherwise be denied
Satisfy any
# Put your password auth stuff here
También puede hacerlo con una lista blanca que probablemente sea mejor, ya que garantiza que sus sitios de desarrollo aún estén protegidos, incluso si alguien decide permitir el acceso a ellos a través de www.dev.site.com, etc .:
SetEnvIf Host ^site/.com$ is_on_public_site
SetEnvIf Host ^www/.site/.com$ is_on_public_site
Order deny,allow
Deny from all
Allow from env=is_on_public_site
Satisfy any
# Put your password auth stuff here
Si no tiene mod_setenvif en su servidor, mod_rewrite también puede hacer el trabajo por usted (reemplace los bloques SetEnvIf en el ejemplo de la lista blanca con lo siguiente):
RewriteEngine On
RewriteCond %{HTTP_HOST} =site.com
RewriteRule ^ - [E=is_on_public_site:yes]
RewriteCond %{HTTP_HOST} =www.site.com
RewriteRule ^ - [E=is_on_public_site:yes]