Apache2 & .htaccess: Apache ignorando o AccessFile

2

Olá, aqui está a configuração do meu servidor:

DEBIAN 32Bits / PHP 5 / Apache

Server version: Apache/2.2.3 - Server built: Mar 22 2008 09:29:10

O AccessFiles:

grep -ni AccessFileName *

apache2.conf:134:AccessFileName .htaccess
apache2.conf:667:AccessFileName .httpdoverride

Todas as instruções AllowOverride na minha pasta apache2 /

mods-available/userdir.conf:6:                AllowOverride Indexes AuthConfig Limit
mods-available/userdir.conf:16:               AllowOverride FileInfo AuthConfig Limit
mods-enabled/userdir.conf:6:                AllowOverride Indexes AuthConfig Limit
mods-enabled/userdir.conf:16:               AllowOverride FileInfo AuthConfig Limit
sites-enabled/default:8:        AllowOverride All
sites-enabled/default:14:           AllowOverride All
sites-enabled/default:19:   AllowOverride All
sites-enabled/default:24:       AllowOverride All
sites-enabled/default:42:        AllowOverride All

O arquivo habilitado para sites / padrão:

  1 <VirtualHost *>
  2         ServerAdmin [email protected]
  3         ServerName mysite.com
  4         ServerAlias mysite.com 
  5         DocumentRoot /var/www/mysite.com/
  6         <Directory />
  7                 Options FollowSymLinks
  8                 AllowOverride All
  9                 Order Deny,Allow
 10                 Deny from all
 11         </Directory>
 12         <Directory /var/www/mysite.com/>
 13                 Options Indexes FollowSymLinks MultiViews
 14                 AllowOverride All
 15                 Order allow,deny
 16                 allow from all
 17         </Directory>
 18         <Directory /var/www/mysite.com/test/>
 19         AllowOverride All
 20         </Directory>
 21 
 22         ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
 23         <Directory "/usr/lib/cgi-bin">
 24                 AllowOverride All
 25                 Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
 26                 Order allow,deny
 27                 Allow from all
 28         </Directory>
 29 
 30         ErrorLog /var/log/apache2/error.log
 31 
 32         # Possible values include: debug, info, notice, warn, error, crit,
 33         # alert, emerg.
 34         LogLevel warn
 35 
 36         CustomLog /var/log/apache2/access.log combined
 37         ServerSignature Off
 38 
 39     Alias /doc/ "/usr/share/doc/"
 40     <Directory "/usr/share/doc/">
 41         Options Indexes MultiViews FollowSymLinks
 42         AllowOverride All
 43         Order deny,allow
 44         Deny from all
 45         Allow from 127.0.0.0/255.0.0.0 ::1/128
 46     </Directory>
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 </VirtualHost>

Se eu alterar qualquer permissão de todos em Negar de todos, isso funcionará sempre que eu colocar.

Eu tenho um .htaccess em /mysite.com/.htaccess & um em /mysite.com/test/.htaccess com:

Order Deny,Allow
Deny from all

Nenhum deles funciona, eu ainda posso ver meu site. Eu tenho o mod_rewrite ativado, mas não acho que faça nada aqui.

Já experimentei quase tudo: / Funciona no meu ambiente local (MAMP) mas falha quando no meu servidor Debian.

    
por Elyx0 31.12.2010 / 18:07

2 respostas

1

Os arquivos .htaccess podem interagir com a configuração principal de maneiras não óbvias. No seu caso, seu problema é que você tem bot de controle de acesso em seu arquivo httpd.conf e .htaccess. E ambos são aplicados.

Você tem em sua configuração:

Order allow,deny
allow from all

E no seu arquivo .htaccess:

Order Deny,Allow
Deny from all

Portanto, o resultado final é como se as permissões fossem:

Order Deny, Allow
Deny From All
Allow From ALL

O que significa que todos têm acesso. Neste caso, você deve usar "Order Allow, Deny".

Você não deve usar arquivos .htaccess se tiver acesso à configuração principal. Os arquivos .htaccess existem como uma solução alternativa para casos em que você não tem o direito de editar a configuração principal (como hospedagem compartilhada), mas se você puder editar a configuração principal, deverá usá-la.

Os arquivos .htaccess têm muitas desvantagens. Eles são lidos somente no momento da solicitação e somente após o servidor ter traduzido a URL para um recurso do sistema de arquivos. Eles não são lidos quando o servidor é iniciado. Isso significa que os arquivos .htaccess são possivelmente lidos em todas as solicitações (causando um impacto no desempenho), mas às vezes não são lidos nunca.

    
por 06.04.2013 / 12:18
-1

Eu acho que quando você está usando negar de todos em seu diretório raiz, você está bloqueando todos, também o seu localhost.
Você precisa colocar localhost permitir em sua raiz.

<Directory /> 
Options FollowSymLinks
AllowOverride All  
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
<Directory>

Em seguida, recarregue e reinicie o apache:
/etc/init.d/apache2 reload
/etc/init.d/apache2 restart

Para referência e desempenho, consulte a documentação do apache para htaccess e autorização

    
por 03.01.2011 / 00:04