Pergunta

Eu tenho um site que serve certos conteúdos com base no subdomínio. Portanto, é o mesmo conjunto de arquivos, e talvez o cabeçalho e algumas informações nas páginas do site mudem com base no subdomínio.

Preciso ter autenticação diferente do HTPassword com base no subdomínio, mas não consigo encontrar informações sobre como fazer um tipo se/então tipo de coisa no htaccess.

Basicamente, o que eu preciso é isso:

Se subdomínio = 'abc' use este arquivo htpassword

Se subdomain = 'def' use este arquivo htpassword

Isso pode ser feito?

Foi útil?

Solução

Tente algo assim:

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

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

Outras dicas

Qual servidor da web você está usando?

Uma técnica que pode funcionar em vários servidores diferentes (certamente funciona no Apache) é ter um arquivo .htaccess diferente no diretório correspondente a cada subdomínio.

Se fosse eu (e não pensei em fazer isso antes) eu faria:

  1. Use um redirecionamento interno usando mod_rewrite para diferentes raízes do site (/suba ou/subb), dependendo de alguns fatores (emulando se/else)
  2. Usar Symblinks no diretório público, mas não o .htaccess

assim:

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

Onde

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

usando

ln -s

ou similar. Em seguida, use mod_rewrite para redirecionar (internamente) para a raiz do site correta. EU acho Mod_rewrite é executado antes da carga .htaccess.

Isso significa que você está atendendo efetivamente aos mesmos arquivos do site com um .htaccess diferente, dependendo do subdomínio.

Espero que isso ajude, um pouco de hack.

Estaria interessado em ver se algo melhor existe.

Você não pode usar se/else porque htaccess não é uma lista de instruções. Mas, se você usar um bloco condicional comou003CIfModule mod_rewrite.c> ouu003CIfDefine something> , você pode usar diretivas diferentes com base em qual subdomínio está sendo solicitado. Não tenho certeza de qual você usaria ...

Você também pode colocar um arquivo .htaccess um nível acima dos arquivos e usaru003CDirectory something> Para especificar regras diferentes para cada subdomínio, mas faça com que os diretórios de subdomínio sejam sintiais para o mesmo diretório com os arquivos compartilhados.

Portanto, este seria o diretório acima das raiz (s) da web:
.htaccess
Sitefiles
Subdomain1 (Symlink parafiles do site)
Subdomain2 (símbolo para os arquivos do site)
...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top