Eu tenho um servidor do serviço AWS EC2 em execução no Linux ubuntu e instalei o apache, php e mysql.
Eu adicionei um .htaccess
arquivo na raiz do meu documento /var/www/html
.
Eu digitei este código nele:
ErrorDocument 404 /var/www/html/404.php
e ele ainda não está aparecendo.
Eu mantive esse comando várias vezes: sudo service httpd restart
para reiniciar o servidor, mas nenhuma alteração foi exibida ...
Como posso corrigir isso ... Fiz algo errado?
Desde já, obrigado!
apache
.htaccess
amazon-ec2
amazon-web-services
apache-config
Shalin Shah
fonte
fonte
400 Bad Request
erro/var/www/html/404.php
?Respostas:
Primeiro, observe que não é necessário reiniciar o httpd para arquivos .htaccess. Os arquivos .htaccess são especificamente para pessoas que não têm root - ou seja, não têm acesso ao arquivo de configuração do servidor httpd e não podem reiniciar o servidor. Como você pode reiniciar o servidor, não precisa de arquivos .htaccess e pode usar a configuração principal do servidor diretamente.
Em segundo lugar, se os arquivos .htaccess estiverem sendo ignorados, você precisará verificar se AllowOverride está definido corretamente. Consulte http://httpd.apache.org/docs/2.4/mod/core.html#allowoverride para obter detalhes. Você também precisa garantir que ele esteja definido no escopo correto - ou seja, no bloco certo em sua configuração. Certifique-se de que você NÃO está editando o que está no bloco, por exemplo.
Terceiro, se você quiser garantir que um arquivo .htaccess esteja de fato sendo lido, coloque lixo nele. Uma linha inválida, como "LINHA INVÁLIDA AQUI", no arquivo .htaccess, resultará em um erro de servidor 500 quando você aponta o navegador para o diretório que contém esse arquivo. Caso contrário, você não tem o AllowOverride configurado corretamente.
fonte
"A STRING"
no meu .htaccess, para receber um erro, coloqueiAllowOverride All
tudoapache2.conf
no meu Debian e ele funcionaAllowOverride
só funciona nas<Directory>
diretivas e será ignorado se colocado dentro de uma<Location ...>
seção, consulte: httpd.apache.org/docs/2.4/mod/core.html#allowoverride<Directory>
diretiva espera um caminho absoluto em vez de relativo. No meu caso,<Directory />
falhou enquanto<Directory /var/www/html/subdir>
trabalhava.Ativar o módulo mod_rewrite do Apache
a2enmod rewrite
adicione o seguinte código ao
/etc/apache2/sites-available/default
AllowOverride All
Reinicie o apache
/etc/init.d/apache2 restart
fonte
Se você tentou todas as opções acima, todas válidas e boas, e seu arquivo htaccess não está funcionando ou está sendo lido, altere a diretiva no
apache2.conf
arquivo. No Ubuntu, o caminho é/etc/apache2/apache2.conf
Altere a
<Directory>
diretiva apontando para suas páginas da web públicas, onde reside o arquivo htaccess. Alterar deAllowOverride None
paraAllowOverride All
Eu tive o mesmo problema e encontrei a resposta e a explicação no Ubuntu Ask! fórum /ubuntu/421233/enabled-htaccess-file-to-rewrite-path-not-working
fonte
AllowOverride FileInfo
é necessário na terceira linha para que o.htaccess
arquivo seja lido e usado.All
também permite substituições de configuração adicionais, como.httpasswd
(que pode ser ativado individualmente usando emAuthconfig
vez deAll
).Para o Ubuntu,
primeiro, execute este comando: -
Em seguida, edite o arquivo
/etc/apache2/sites-available/000-default.conf
usando o nano ou vim usando este comando: -Em seguida, no
000-default.conf
arquivo, adicione isso após a linhaDocumentRoot /var/www/html
. Se o diretório raiz do html for outro, escreva o seguinte: -Depois de fazer tudo, reinicie o apache usando o comando
sudo service apache2 restart
fonte
Basta seguir 3 etapas
Ative mode_rewrite usando o seguinte comando
reescrever sudo a2enmod
A senha será solicitada. Então digite sua senha
Atualize seu arquivo 000-default.conf ou default.conf, localizado no diretório / etc / apache2 / sites-available / . você não pode editá-lo diretamente. então use o seguinte comando para abrir
sudo gedit /etc/apache2/sites-available/000-default.conf
Ou sudo gedit /etc/apache2/sites-available/default.conf
você vai ter
OU
linha. Adicione o seguinte código depois dele.
Torne o usuário o caminho da tag de diretório igual ao mostrado no seu arquivo.
Reinicie seu servidor apache usando o seguinte comando
serviço sudo reinício apache2
fonte
Muito provavelmente, AllowOverride está definido como None. na seção Diretório do apache2.conf, localizada na pasta / etc / apache2
Tente configurá-lo para AllowOverride All
fonte
Na minha experiência, a diretiva / var / www / directory impede diretivas de host virtual da subpasta. Portanto, se você tentou todas as sugestões e ainda não está funcionando e está usando virtualhosts, tente isso;
1 - Certifique-se de ter
AllowOverride All
diretiva em/etc/apache2/sites-available/example.com.conf
2 - Verifique as diretivas / var / www / Directory em
/etc/apache2/apache2.conf
(possivelmente na linha 164), o que parece;Se houver uma
AllowOverride None
diretiva, altere-a paraAllowOverride All
ou simplesmente escape da linhafonte
Por padrão, o Apache proíbe o uso de um arquivo .htaccess para aplicar regras de reescrita.
Etapa 1 - Habilitando o mod_rewrite (se não estiver habilitado) Primeiro, precisamos ativar o mod_rewrite. Está disponível, mas não ativado, com uma instalação limpa do Apache 2.
Isso ativará o módulo ou alertará que o módulo já está ativado. Para efetivar essas alterações, reinicie o Apache.
Agora mod_rewrite está totalmente ativado. Na próxima etapa, configuraremos um arquivo .htaccess que usaremos para definir regras de reescrita para redirecionamentos.
Etapa 2 - Configurando o .htaccess Abra o arquivo de configuração padrão do Apache usando o nano ou seu editor de texto favorito.
Dentro desse arquivo, você encontrará um bloco começando na primeira linha. Dentro desse bloco, adicione o novo bloco a seguir para que seu arquivo de configuração seja o seguinte. Verifique se todos os blocos estão recuados corretamente.
/etc/apache2/sites-available/000-default.conf
Salve e feche o arquivo. Para efetivar essas alterações, reinicie o Apache.
Feito. Seu .htacess deve funcionar. Este link pode realmente ajudar alguém https://www.digitalocean.com/community/tutorials/how-to-rewrite-urls-with-mod_rewrite-for-apache-on-ubuntu-16-04
fonte
$ sudo httpd -k restart
(Red Hat 4.4.7-23)Eu limpei esse uso. Ao usar este site, clique aqui , siga as etapas, as mesmas etapas seguem para a versão 18.04 do ubuntu
fonte
No
WampServer
ícone Abrir Bandeja do WampServer ----> Apache ---> Módulos Apache ---> rewrite_modulefonte
use RewriteBase / {sua pasta} / em seu arquivo .htaccess
fonte
Para ser completo, se "AllowOverride All" não corrigir o problema, você poderá depurar esse problema usando:
Execute
apachectl -S
e veja se você possui mais de um namevhost. Pode ser que o httpd esteja procurando .htaccess de outro DocumentRoot.Use
strace -f apachectl -X
e procure de onde ele está carregando (ou não está carregando) .htaccess.fonte