Erro 404 Usando Permalink WordPress – Uma Possível Solução

A algum tempo eu estive tentando alterar o Permalink do meu blog, porém sem sucesso.
Até então eu achava que algum plugin que estava dando conflito, mas depois de MUITO pesquisar, descobri onde era o problema.

Cenário do Problema

Vou descrever qual era o problema que eu tive, para vocês saberem se é o caso de vocês ou não.

  1. Começo dizendo que se eu criasse um blog do zero, ele já não funcionava.
  2. O arquivo .htaccess tinha as permissões corretas.
  3. Na configuração do VirtualHost tinha já configurado corretamente a opção de AllowOverride All e FollowSymLinks habilitado.
  4. Mesmo sem nenhum plugin, com o tema padrão dava o erro.
  5. Erro 404 após a mudança do PermaLinks pra qualquer outro sem ser o default.

Dica

Para saber melhor onde se encontra o seu problema, faça o seguinte, verifique se a mensagem da pagina de 404 é uma mensagem de erro padrão do Apache ou se é uma mensagem bonitinha do seu blog dizendo que deu 404.
Se a pagina de 404 NÃO é do WordPress, então você sabe que é algum erro na configuração do apache!

O Problema

Não meus caros, o problema não estava ai nos tópicos citados, o problema era o seguinte:
No arquivo .htaccess tinha algo parecido com isso:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Reparem que quando ele faz IfModule mod_rewrite.c ele vai verificar se está habilitado o modulo: mod_rewrite.c. Se não estiver habilitado, basicamente ele não vai aplicar as mudanças que deveriam ser feitas.

Mas por que raios o mod_rewrite.c não estaria habilitado?
Por que aparentemente quando se instala o apache e o php separados no Ubuntu, esse modulo vem desativado por default.

Resolvendo o Problema

Para ativar o modulo “mod_rewrite.c” use o comando:

$ a2enmod rewrite

E pronto, basta agora alterar o PermaLink que ele vai funcionar.
Se com isso ele não funcionar, eu aconselho a verificar os tópicos citados anteriormente, quem sabe um deles não está sendo o seu problema?

Se ainda assim não funcionar…

Se depois de habilitar o mod_rewrite.c, ainda assim você não estiver conseguindo fazer isso funcionar, talvez isso resolva:
Verifique se na configuração do seu VirtualHost no apache, se você tem a seguinte configuração:

       <Directory /home/usuario/meu_blog/>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride All
		Order allow,deny
		allow from all
	</Directory>

Atenção especial para a linha AllowOverride All.
Depois de muito tempo descobri que isso também era necessário para fazer funcionar(dependendo do tipo de instalação que você faça do PHP e do Apache).
Não esqueça de reiniciar o Apache, e pronto.

Espero que tenha ajudado.
Abraços.

About arruda

Adoro programar, descobrir novas frameworks ágeis e suas diversas aplicações.