Restringir o acesso no apache, exceto por um URL ao usar o "arquivo mestre" e mod_rewrite

0

Apliquei com êxito a autenticação básica em todo o meu site, mas agora desejo abrir uma exceção para um padrão de URL específico. Pelo que entendi, posso usar a diretiva, mas até agora não está funcionando.

Talvez o que complique seja o fato de que todas as páginas do meu site são, na verdade, /master.php e a única diferente de página para página é a string de consulta, que instrui o master.php a injetar o conteúdo específico da página. Isso me dá uma solução de pele realmente simples. Juntamente com o mod_rewrite, tenho URLs amigáveis como esta:

mysite.com/stats
mysite.com/about

que são reescritos para:

mysite.com/master.php?p=stats
mysite.com/master.php?p=about

Nesta configuração, é possível exigir autenticação para todo o site, exceto para / about, por exemplo? Note que / about pode ter uma string de consulta depois dela, e é por isso que preciso criar uma exceção para um URL padrão , não apenas uma URL específica.

Se isso faz alguma diferença, aqui estão alguns detalhes:

  • Ubuntu 15.04
  • Apache 2.4.10
  • Minhas reescritas estão no arquivo site.conf, não em arquivos .htaccess.
por Craig Silver 26.10.2015 / 07:16

1 resposta

0

Usando mod_setenvif :

SetEnvIf Request_URI "^/about$" allow=yes

AuthType Basic
AuthName "Password Required"
AuthUserFile /var/www/webinterface/.htpasswd
Options +FollowSymLinks
Order Deny,Allow
Satisfy any
Deny from All
Require valid-user
Allow from env=allow

→ parte inferior bloqueia todo o conteúdo, exceto se você estiver logado ou se allow=yes , que é definido apenas se a solicitação for o site sobre.

referência: link

    
por 27.10.2015 / 08:07