.htaccess para projectos PHP: URLs amigáveis e redireccionamentos

O ficheiro .htaccess é onde se diz ao servidor como tratar os endereços: mandar todos os pedidos para um único ficheiro index.php (as URLs amigáveis), redireccionar um endereço para outro, e esconder o que não deve ser público. É texto simples, fica na pasta do site, e o servidor lê-o a cada pedido.

O que cada necessidade pede

Quero… Directiva Nota
URLs amigáveis (um só ponto de entrada) RewriteRule para o index.php É o que a maioria das aplicações PHP espera. Primeiro bloco abaixo.
Mudar uma página de sítio Redirect 301 O 301 diz aos motores de pesquisa que a mudança é definitiva.
Um só endereço para o site (com ou sem www) RewriteCond e RewriteRule Evita o mesmo site em dois endereços.
Forçar https RewriteCond e RewriteRule Já está descrito em redireccionar HTTP para HTTPS.
Esconder ficheiros como o .env FilesMatch Último bloco abaixo.

Os blocos que se usam mais

URLs amigáveis: tudo o que não for um ficheiro ou uma pasta que exista vai para o index.php.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

Uma página que mudou:

Redirect 301 /pagina-antiga.html /pagina-nova.html

Só sem www (troque o nome pelo seu, com o ponto escrito como indicado):

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.seudominio\.tld$ [NC]
RewriteRule ^(.*)$ https://seudominio.tld/$1 [R=301,L]

Esconder ficheiros que começam por ponto (como o .env ou o .git):

<FilesMatch "^\.">
Require all denied
</FilesMatch>

Antes de mexer

1 Faça uma cópia do .htaccess antes de o editar: é só carregar nele e escolher copiar, no File Manager.
2 Mude uma coisa de cada vez e abra o site depois de cada alteração. Um erro de escrita num único carácter dá erro 500 no site inteiro.
3 Teste com 302 e passe a 301 no fim. O navegador guarda um 301 durante muito tempo; se se enganar no destino, continua a ir para o sítio errado mesmo depois de corrigir. Teste numa janela privada.
4 A ordem conta: os redireccionamentos põem-se antes do bloco do index.php.

Duas notas finais. Um .htaccess aplica-se à pasta onde está e às que estão dentro dela, e as regras de uma pasta de dentro correm além das de cima. E escreva um comentário (uma linha que começa por #) a explicar cada bloco que acrescenta: daqui a um ano, ninguém se lembra de porque está lá.

O WordPress escreve o seu próprio bloco, entre as linhas “BEGIN WordPress” e “END WordPress”. Não edite lá dentro: o WordPress reescreve-o. Ponha as suas regras acima ou abaixo. Se os endereços do WordPress dão 404, veja permalinks e o 404 que se segue.
Obteve um 500 depois de gravar? Volte à cópia. O erro vem quase sempre da última linha acrescentada. Veja também erro 403: permissões, .htaccess e IPs bloqueados e, para redireccionar sem perder posições no Google, redireccionamentos 301.

Gravou o .htaccess e o site deu erro 500? Diga-nos a hora e o que acrescentou.

Abrir um pedido de suporte

VEJA TAMBÉM

Redireccionar HTTP para HTTPS com .htaccess

Redireccionamentos 301 quando muda uma página ou um domínio

Erro 403 Forbidden: permissões, .htaccess e IPs bloqueados

Permalinks do WordPress e o 404 que se segue

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde $6.60/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?