O arquivo .htaccess padrão do WordPress e o que adicionar com segurança
Guia do .htaccess do WordPress
Arquivo .htaccess padrão do WordPress (site único e multisite) | We.Inc
Regras .htaccess padrão do WordPress para site único, multisite com subpastas e com subdomínios, mais adições seguras que bloqueiam o wp-config.php e forçam HTTPS. Monte e copie o seu.
O WordPress no Apache precisa de um pequeno bloco no .htaccess da raiz do site que envia para o index.php toda requisição de arquivo ou pasta que não existe, e é isso que faz os permalinks amigáveis funcionarem. Cole o bloco entre # BEGIN WordPress e # END WordPress, e coloque as suas próprias regras acima desses marcadores.
Requisições para o próprio index.php não são alteradas
RewriteCond %{REQUEST_FILENAME} !-f
Só se nenhum arquivo real corresponder
RewriteCond %{REQUEST_FILENAME} !-d
E nenhuma pasta real corresponder
RewriteRule . /index.php [L]
Entrega todo o resto ao WordPress
Um .htaccess quebrado costuma aparecer como todas as páginas, exceto a inicial, retornando 404, ou o site inteiro retornando erro 500 depois da edição de um plugin. Escolha o seu tipo de instalação abaixo, marque os extras que quiser e copie um arquivo completo. A parte do WordPress corresponde às regras publicadas na documentação para desenvolvedores do WordPress.
Escolha site único, multisite com subpastas ou multisite com subdomínios.
Marque os extras que quiser. Cada um é colocado acima dos marcadores do WordPress, para que o WordPress nunca o sobrescreva.
Copie o arquivo, faça backup do seu .htaccess atual e envie o novo para a pasta que contém o wp-config.php.
Abra um post e a área de administração para confirmar, depois vá em Configurações, Links permanentes e clique em Salvar para o WordPress verificar as regras.
Guarde uma cópia do arquivo que funciona antes que qualquer plugin mexa nele. Restaurar um arquivo bom conhecido é mais rápido do que depurar um erro 500.
Se você pode editar a configuração principal do Apache, coloque estas regras lá. A própria documentação do Apache diz que o .htaccess custa uma busca em cada diretório a cada requisição.
Nunca edite à mão o que fica entre os marcadores BEGIN e END WordPress. O WordPress pode reescrever essa seção quando as configurações de links permanentes são salvas.
O Nginx ignora o .htaccess por completo. Em uma hospedagem com Nginx, a mesma função é feita por uma linha try_files no bloco server.
Perguntas frequentes
Onde fica o arquivo .htaccess no WordPress?
Na pasta raiz da instalação do WordPress, ao lado do wp-config.php e da pasta wp-content. O nome começa com ponto, então gerenciadores de arquivos e clientes FTP muitas vezes o escondem até você ativar a exibição de arquivos ocultos.
Como restauro o .htaccess padrão do WordPress?
Substitua o conteúdo do arquivo pelo bloco de site único desta página, ou renomeie o arquivo quebrado, vá em Configurações, Links permanentes no painel e clique em Salvar. O WordPress grava um bloco novo quando consegue escrever no arquivo.
Por que recebo erro 404 em todas as páginas, menos na inicial?
Quase sempre as regras de reescrita estão faltando ou o mod_rewrite está desligado. A página inicial carrega porque ela é o próprio index.php; cada permalink amigável precisa da regra que envia caminhos desconhecidos para o index.php.
De qual bloco multisite eu preciso?
Do que corresponde a como a rede foi instalada. Sites em example.com/shop usam o bloco de subpastas; sites em shop.example.com usam o bloco de subdomínios. Os dois diferem na forma como removem o prefixo do site dos caminhos do wp-admin e dos arquivos.
É seguro bloquear o acesso ao wp-config.php no .htaccess?
Sim. O PHP lê o wp-config.php do disco, não pela web, então negar requisições web a ele não afeta o site. A documentação do WordPress sugere a mesma regra FilesMatch mostrada aqui.
Como a reescrita funciona
O Apache lê as condições de cima para baixo. Uma requisição para uma imagem ou folha de estilo real corresponde a -f e é servida diretamente, uma requisição para uma pasta real corresponde a -d, e todo o resto cai no index.php, onde o WordPress procura o post, a página ou o arquivo correspondente a esse endereço.
A linha HTTP_AUTHORIZATION copia o cabeçalho Authorization para uma variável que o PHP consegue ler. Em algumas configurações de servidor, o PHP nunca vê esse cabeçalho de outra forma, o que quebra logins feitos por meio dele.
Onde ficam as suas próprias regras
Coloque redirecionamentos, regras de HTTPS e bloqueios de acesso acima de # BEGIN WordPress. As regras rodam em ordem, então um redirecionamento colocado depois do bloco do WordPress nunca seria alcançado para a maioria das URLs.
Mantenha poucas adições e teste cada uma. Cada regra roda em toda requisição, e um erro de digitação em qualquer lugar do arquivo derruba o site inteiro com um erro 500.
Os três blocos oficiais do WordPress
Estas são as regras que o WordPress documenta para cada tipo de instalação. Use exatamente uma delas.
Site único
O bloco para um site WordPress normal instalado na raiz web.
Multisite com subpastas
Para redes em que cada site fica em um caminho como example.com/shop/.
Multisite com subdomínios
Para redes em que cada site tem o próprio subdomínio, como shop.example.com.
Adições seguras
Cada uma destas vai acima de # BEGIN WordPress. Adicione uma de cada vez e recarregue o site depois de cada uma.
Negar acesso web a arquivos sensíveis
Usa a diretiva Require do Apache 2.4, então um servidor 2.2 mais antigo precisaria da sintaxe antiga com Order e Deny.
Forçar HTTPS
Um redirecionamento 301 permanente que mantém o host e o caminho. Se a sua hospedagem oferece uma opção de HTTPS no painel, use-a e pule esta.
Gerador de .htaccess
Tipo de instalação do WordPress
Site único
Multisite, subpastas
Multisite, subdomínios
Extras colocados acima do bloco do WordPress
Bloquear acesso web a wp-config.php, .htaccess, .htpasswd e debug.log
Redirecionar toda requisição http:// para https://
Impedir que o Apache liste o conteúdo de pastas sem arquivo index
Seu arquivo .htaccess
Só ative o redirecionamento para HTTPS quando o seu certificado estiver funcionando, ou os visitantes vão ver um aviso do navegador.