Como definir AllowOverride all

161

Eu quero definir o AllowOverride allMas eu não sei como fazê-lo. Encontrei o seguinte código pesquisando no google e colando-o .htaccess:

<Directory>
        AllowOverride All
</Directory>

Mas depois de colar comecei a receber "Internal Server Error"

Alguém pode me orientar onde colocar esse código ou como fazê-lo?

Munib
fonte
3
A <Directory>diretiva requer um argumento de caminho.
FKinternet 17/03/19

Respostas:

317

Caso você esteja no Ubuntu, edite o arquivo /etc/apache2/apache2.conf(aqui temos um exemplo /var/www):

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

e mude para;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

então,

sudo service apache2 restart

Você também pode fazer isso sudo a2enmod rewritepara ativar a reescrita do módulo.

Naveed
fonte
55
Eu também precisava usar sudo a2enmod rewrite, então funcionou. No Ubuntu 14.04 LTS. Espero que seja útil para alguém.
Jonauz #
2
Estranho ... quando faço isso, recebo o erro interno do servidor. Isso indica um erro no arquivo .htaccess localizado em /var/www/.htaccess? Transformando o apache2, conf de volta ao AllowOverride None, o erro é corrigido, mas não permite a reescrita de URL.
o_O
No Ubuntu 12.04. Eu encontrei este arquivo em / etc / apache2 / sites-available / default path
Enviado por
Como posso substituir isso de um arquivo separado? Eu posso ver que existe um IncludeOptional conf-enabled/*.confna última linha do meu apache2.confarquivo. Mas parece que isso apache2.confé priorizado.
precisa saber é o seguinte
Isso faz a mágica para mim. Depois de atualizar o servidor debian da empresa de wheezy para jessie, tudo no apache parou de funcionar e depois de adicionar isso, tudo começou a funcionar novamente.
periket2000
51

O principal objetivo de AllowOverrideé que o gerenciador dos principais arquivos de configuração do apache (aquele encontrado em / etc / apache2 / principalmente) decida qual parte da configuração pode ser alterada dinamicamente, conforme o caminho, pelos aplicativos.

Se você não é o administrador do servidor, depende do nível AllowOverride permitido por esses administradores. Para que eles possam impedir que você altere algumas configurações importantes de segurança;

Se você é o gerenciador de configuração principal do apache, sempre use AllowOverride Nonee transfira todos os exemplos baseados em google_ que encontrar, com base nos arquivos .htaccess, para Directoryseções nos principais arquivos de configuração. Como um conteúdo .htaccess para um .htaccessarquivo /my/path/to/a/directoryé igual a uma <Directory /my/path/to/a/directory>instrução, exceto que a .htaccessalteração dinâmica na configuração da solicitação por HTTP é algo que torna o servidor da Web mais lento. Sempre prefira uma configuração estática sem .htaccessverificações (e você também evitará ataques de segurança por .htaccessalterações).

A propósito, no seu exemplo você usa <Directory>e isso sempre estará errado, as instruções do Diretório sempre contêm um caminho, como <Directory />ou <Directory C:>ou <Directory /my/path/to/a/directory>. E é claro que isso não pode ser colocado em um .htaccesscomo .htaccessé como uma instrução Directory, mas em um arquivo presente nesse diretório. É claro que você não pode alterar AllowOverrideum, .htaccesspois esta instrução está gerenciando o nível de segurança dos .htaccessarquivos.

regilero
fonte
17

Ir para your_severpath/apache_ver/conf/ Abrir o arquivo httpd.confno bloco de notas.

Encontre esta linha:

#LoadModule módulos vhost_alias_module / mod_vhost_alias.so

Remova o símbolo de hash:

Módulos LoadModule vhost_alias_module / mod_vhost_alias.so

Então vá para <Directory />

e mude para:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Em seguida, reinicie o servidor local.

Achintya Nayak
fonte
Tarefa concluída! Ty Sir!
James Walker
6
NB Order allow,denye Allow from allsão para o Apache 2.2 e versões anteriores. Com o Apache 2.4, essas duas linhas são substituídas por, Require all grantedcomo mostrado em outras respostas.
FKinternet 17/03/19
13

No Linux, para relaxar o acesso à raiz do documento, você deve editar o seguinte arquivo:

/etc/httpd/conf/httpd.conf

E, dependendo do nível de diretório em que você deseja relaxar o acesso, é necessário alterar a diretiva

AllowOverride None

para

AllowOverride All

Portanto, supondo que você queira permitir acesso a arquivos no diretório / var / www / html, altere as seguintes linhas de:

<Directory "/var/www/html">
 AllowOverride None
</Directory>

para

<Directory "/var/www/html">
 AllowOverride All
</Directory>
Javier La Banca
fonte
8
e reinicie o servidor depois #
Daniel
Depois de cem vezes duplamente verificando minhas .htacces - essa foi a solução! Muito obrigado. Eu pensei, "todos" é o valor padrão da configuração do apache.
Matthias Kleine
Além disso, mencionar o Linux na sua resposta não é bom. Embora isso seja antigo, eu só quero esclarecer que o que você está dizendo é para as distros baseadas no Redhat
Chi.CJRajeeva Lochana
11

Se você estiver usando Linux, poderá editar o código no diretório

/etc/httpd/conf/httpd.conf

Agora, aqui encontre a linha de código como

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Altere o AllowOveride None para AllowOveride All

Agora agora você pode definir qualquer tipo de regra em seu arquivo .httacess dentro de seus diretórios, se qualquer outro sistema operacional apenas tentar encontrar o arquivo httpd.conf e editá-lo.

SAR
fonte
A partir de 18 de novembro de 2015, 1539 PST, quando pesquiso no Google 'allowoverride', vejo uma caixa acima dos resultados da pesquisa que mostram o seguinte:now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
boot13
6

Eu acho que você deseja configurá-lo no seu httpd.confarquivo, em vez do .htaccessarquivo.

Não tenho certeza de qual sistema operacional você usa, mas esse link para o Ubuntu pode fornecer algumas dicas sobre o que fazer.

https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles

Qben
fonte
5

Como outros usuários explicaram aqui sobre o uso da diretiva allowoveride, que é usada para dar permissão ao uso do .htaccess. uma coisa que quero salientar é que nunca use allowoverride all se outros usuários tiverem acesso para escrever .htaccess. Em vez disso, use allowoveride para permitir determinados módulos.

Tais como AllowOverride AuthConfig mod_rewriteEm vez de

AllowOverride All

Porque módulos como mod_mime podem renderizar os arquivos do servidor como texto sem formatação.

Abhishek Gurjar
fonte
1
OBRIGADO!! Era exatamente isso que eu estava procurando. Quero redirecionar o windwalker.com.au para o windwanderer.com.au e, portanto, precisava permitir essa diretiva em um arquivo .htaccess e NADA MAIS. Sempre colocando AllowOverride ALL significant'y reduz a segurança dos meus servidores.
Jesse the Wind Wanderer
1

Também encontrei esse problema e encontrei a solução na etapa 2 abaixo: 1. Na pasta apache2 habilitada para sites, você edita no elemento Diretório configurando "AllowOverride all" (deve ser "all" e não "none") 2. No projeto kohana na pasta www, renomeie "example.htaccess" para ".htaccess"

Eu fiz isso no ubuntu. Espero que isso ajude você.

Quang Le
fonte
0

SuSE Linux Enterprise Server

Certifique-se de editar o arquivo correto https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

O principal arquivo de configuração do servidor Apache. Evite alterar este arquivo. Ele contém principalmente instruções de inclusão e configurações globais. Substitua as configurações globais nos arquivos de configuração pertinentes listados aqui. Altere as configurações específicas do host (como raiz do documento) na configuração do host virtual .

Nesse caso, vhosts.d/*.confdeve ser editado

escada rolante
fonte
0

Além disso, essas respostas corretas votadas às vezes podem ser vistas do mesmo erro devido a configurações diferentes e incompatíveis em SSLparte das configurações do servidor da web . (Obviamente, quando não estiver usando o .htaccessarquivo).

Mojtaba Rezaeian
fonte