Resolver problemas
Erro 404 em imagens, CSS ou JS com o caminho correto
Por vezes, liga uma imagem, um ficheiro CSS ou um JavaScript, tem a certeza de que o caminho está correto e, mesmo assim, o servidor responde que não o encontra (erro 404). Estas são as causas mais frequentes, da mais simples para a menos simples.
O URL não é exatamente o que pensa
Abra o site, prima F12, entre no separador Rede e recarregue. Clique no ficheiro que falha para ver o URL completo que o navegador pede. Compare-o com a localização real do ficheiro no gestor de ficheiros:
- Maiúsculas e minúsculas: no servidor,
Logo.pngelogo.pngsão ficheiros diferentes, mesmo que no seu computador funcione. - Pasta do domínio: o ficheiro tem de estar dentro da pasta desse domínio (
public_htmlou a do domínio adicional), e não noutra. - Caminhos dentro de um CSS: um caminho relativo como
url(img/fondo.jpg)dentro de um CSS é procurado a partir da pasta do CSS, e não da página. - Ficheiros com versão ou hash (
app.3f9a1c.js): depois de atualizar o site, a página pode continuar a pedir o ficheiro antigo que já apagou. Esvazie a cache da aplicação e, se usar uma CDN, a da CDN.
Problema de permissões
Verifique se as pastas, as subpastas e os próprios ficheiros têm permissões 755 nas pastas e 644 nos ficheiros. Pode alterá-las a partir do gestor de ficheiros do cPanel com o botão direito > Change Permissions. Nunca use 777: não é necessário e explicamo-lo em porque não precisa de permissões 777.
O framework interceta os pedidos
Frameworks e aplicações como Laravel, Symfony ou CodeIgniter enviam todos os pedidos para o seu index.php através de regras do .htaccess, e essas regras afetam também todas as subpastas. Se as regras não excluírem os ficheiros que existem, o framework responde 404 às suas imagens ou CSS.
Abra o .htaccess da raiz do site e verifique se, antes da regra que envia tudo para index.php, estão estas duas condições:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^ index.php [L]
Com elas, se o ficheiro ou a pasta existirem, o servidor entrega-os diretamente. As versões atuais dos frameworks já as incluem; o problema costuma surgir em versões antigas ou em .htaccess modificados manualmente.
Se não puder mexer nesse .htaccess, crie outro dentro da pasta onde estão os ficheiros estáticos que falham, com esta linha no início:
RewriteEngine Off
Assim desativa as regras de reescrita apenas nessa pasta, e o resto do site continua a funcionar da mesma forma.
Bloqueio do ModSecurity (erro 403)
Se, no separador Rede, o erro não for 404 mas 403, o mais provável é que a firewall ModSecurity esteja a bloquear o ficheiro por engano, por exemplo pelo seu nome ou pelos parâmetros do URL. Desative-a por um momento para o domínio, recarregue a página e volte a ativá-la logo a seguir.
Se, com o ModSecurity desativado, o ficheiro carregar, escreva-nos com o URL exato e a hora: criaremos uma exceção apenas para essa regra e esse caminho, e assim não terá de o deixar desativado.
Também lhe pode ser útil
- 500 Internal Server Error Diagnostique um erro 500 a partir do pedido e do registo do mesmo instante antes de rever o PHP, o ....
- Internal server error ao aceder ao email através do Webmail Distinga um erro interno do Webmail de um aviso de quota e verifique a caixa de correio, o espaço to...
- Aceder a um site bloqueado pelo Google Safe Browsing e retirar o aviso Como entrar no seu site quando o navegador mostra «site perigoso» do Google Safe Browsing, e como li...
- Algumas bases de dados não aparecem no phpMyAdmin Verifique se a base pertence à conta e peça a revisão das permissões ou do mapa do cPanel quando apa...
Algo não bate certo ou mudou? Diga-nos e revemos.