Permitir subdiretório com o Apache

6

Sinto que esta é uma correção bastante simples e vi problemas semelhantes ao pesquisar, mas não consegui corrigi-lo com essas soluções. Basicamente, o problema é que não consigo acessar nenhum subdiretório no meu servidor. Ir ao localhost traz o índice bem. Mas indo para localhost / test dá um erro 403 Proibido.

Estou executando o CentOS. Eu tentei editar o arquivo /etc/httpd/conf/httpd.conf de várias maneiras, mas não tive sorte. O DocumentRoot está localizado em / var / www / html. Atualmente tenho:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Eu tentei adicionar o seguinte:

<Directory "/var/www/html/test">
    Order allow,deny
    Allow from all
</Directory>

Mas ainda me dá o erro 403 proibido.

    
por Danny 07.06.2013 / 16:22

3 respostas

8

Você não precisa especificamente permitir o acesso a um diretório abaixo de um que já esteja configurado dentro do httpd.conf

Como o / var / www / html está configurado com "AllowOverride None", então o problema não se deve a um arquivo .htaccess que esteja alterando os direitos de acesso.

O único motivo restante é que as permissões nos arquivos e diretórios não permitem que o servidor da Web seja lido a partir desse diretório. O que eles são e o que devem ser dependem do seu modelo de segurança. Mas, como uma solução rápida, você pode tentar:

# chmod a+rx /var/www/html/test
# chmod a+r /var/www/html/*

Se isso resolver o problema, reserve tempo para corrigir a propriedade e as permissões dos arquivos para algo mais apropriado.

    
por 07.06.2013 / 16:38
2

Normalmente eu recomendo dar uma olhada primeiro em http error_log para ver o problema exato.

Com a configuração padrão, você deve poder acessar o diretório workshop-5.4:

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<Directory "/var/www/html">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Se você ainda não consegue acessar o diretório, tudo aponta para permissões de diretório, nesse caso eu sugiro tentar:

chown -R apache.apache /var/www/html  # Assuming apache as default User
chmod -R 755 /var/www/html            # Making sure all users can read and execute

Em um terminal separado, siga os seguintes comandos:

apachectl configtest && apachectl restart
tail -f /etc/httpd/logs/error_log     # Assuming default error_log location

Tente adicionar um arquivo html simples como (example.html):

<html>
<head><body>It works!</body></head>
</html>

Finalmente, recarregue a página, tente carregar example.html e dê uma olhada na saída do comando tail .

    
por 07.06.2013 / 16:36
0

Comente as diretivas <Directory> e simplesmente defina DocumentRoot /var/www/html e chown -R apache:apache /var/www/html e reinicie httpd .

A diretiva <Directory> deve ser usada para aplicar o grupo de diretivas a um diretório de sistema de arquivos específico (ou seja, alterar permissões), portanto, você geralmente deseja usá-la em <VirtualHost> .

    
por 07.06.2013 / 16:42