WordPress: Erro 404 ao alterar o padrão dos permalinks

Um problema muito recorrente para quem usa o WordPress é quando resolvemos alterar o padrão dos links permanentes e recebemos um belo erro 404 em todas as páginas do blog. Para evitar este problema precisamos verificar algumas configurações do servidor para que funcione corretamente, além de instalar um plugin para que as páginas antigas não fiquem inacessíveis pelos links antigos e percam a indexação do google e outros mecanismos de pesquisa.

Configurações do Apache:

Observe a configuração do VirtualHost do apache:

$ sudo vi /etc/apache2/sites-available/[seu site]

As opções FollowSymLinks e AllowOverride All devem constar na configuração do seu virtualhost:

<Directory /var/www/wordpress>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

Salve e feche o editor de texto.

Permissões do arquivo .htaccess:

Verifique se o arquivo /…/wordpress/.htaccess existe e se o WordPress pode escrever nele, uma forma simples de descobrir é acessando Painel>Configurações>Links Permanentes e observando se há alguma mensagem do WordPress referente ao .htaccess. Se você ver a mensagem abaixo, significa que seu .htaccess não pode ser escrito:

Para resolver este problema, altere as permissões do arquivo, o recomendado pelo wordpress é 644:

$ sudo chmod 644 .htaccess

No entanto, se o WordPress ainda assim exibir a mensagem acima use temporariamente uma permissão maior, como 755. Depois de ajustar as permissões tente alterar o formato dos permalinks e verifique se o WordPress escreveu no arquivo:

$ cat .htacess

o conteúdo do arquivo deve ser algo assim:

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

Note no início do arquivo: <IfModule mod_rewrite.c> isto verifica se o módulo do apache mod_rewrite.c está habilitado, se não estiver o apache ignorará os comandos seguintes do arquivo. Para verificar se o módulo está ativado use:

$ ls /etc/apache2/mods-enabled/

Se rewrite.load não constar na lista, o módulo está desabilitado (estranhamente no Ubuntu, este módulo vem desativado).

Para habilitar o módulo use o comando:

$ sudo a2enmod rewrite

A partir daqui, você já poderá alterar a estrutura de permalinks que deverá funcionar.

Plugin para migração dos permalinks:

Se você está mudando os permalinks com conteúdo já publicado, não vai querer que seus antigos links resultem num 404 certo? Sem falar no PageRank, que acabaria indo pelo ralo já que seus antigos links não funcionam mais.

Para resolver o problema, baixe e instale o Dean’s plugin for permalinks migration que redireciona os links antigos para os novos, sem complicações. =)

Para configurar o plugin acesse no painel: Configurações>PermalinksMigration, informe o formato antigo (neste caso está o padrão: /?p=N) e clique em update options, que o plugin já passa a funcionar corretamente, redirecionando os acessos dos links antigos para os novos.

Pronto! A partir de agora seu blog já deve responder tanto pelos links antigos como pelos novos permalinks! Espero ter ajudado! =)

Fonte: Blog Luiz Guanabara


2 Comentários

Eduardo
1

Isso aqui me salvou:
Se rewrite.load não constar na lista, o módulo está desabilitado (estranhamente no Ubuntu, este módulo vem desativado).
Para habilitar o módulo use o comando:
$ sudo a2enmod rewrite
Muito obrigado! Artigo de grande ajuda porque todos os outros itens eu conhecia. Troquei o VPS de um Fedora para Ubuntu! Estava quebrando a cabeça até chegar aqui.
Obrigado.

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!