WordPress está me dando uma página 404 não encontrada para todas as páginas, exceto a página inicial

115

De repente, eu vou ao meu site WordPress e todas as páginas me mostram uma página 404 não encontrada. Presumo que o problema esteja na estrutura do permalink, que posso jurar que não toquei. A configuração do permalink é "mês e nome".

Eu pesquisei casos semelhantes desse problema online e muito disso tem a ver com o .htaccessarquivo? Tentei encontrar, mas não consigo. Talvez tenha sido excluído de alguma forma? Onde ele deveria estar localizado.

Qualquer sugestão será útil

e, claro, posso ver arquivos ocultos.

Adão
fonte
Sugiro que você pergunte isso no wordpress.stackexchange.com também.
James Wiseman,

Respostas:

95

.htaccess é um arquivo oculto, então você deve definir todos os arquivos como visíveis em seu ftp.

Eu sugiro que você retorne sua estrutura de permalink ao padrão (? P = ID) para garantir que .htaccess seja o problema.

Depois disso, você pode simplesmente definir a estrutura "mês e nome" novamente e ver se funciona.

PS: Você atualizou para 3.1? Eu vi algumas pessoas com problemas de plug-in neste caso.

Rochester Oliveira
fonte
1
sim, eu mostrei arquivos ocultos. Eu mudei de padrão para permanente e funciona no padrão. Além disso, o wordpress se atualiza ou algo assim? Percebo que, quando faço o logon, tenho uma nova barra de tarefas de administração em meu site, que não tinha antes. Não sei como foi parar aí.
Adam,
alguém atualizou por engano para 3.1, então entrou em conflito com um plugin
Adam
1
Ausência .htaccesstambém pode levar a esse problema, independentemente do que você corrigir no link permanente, então verifique primeiro, não está oculto ou ausente
Osify
1
Simplesmente faça login no administrador do WordPress e salve os parmalinks novamente. Isso irá gerar um arquivo .htaccess ou atualizar o existente.
Keyur Patel
Eu tentei usar o admin e atualizar manualmente o arquivo .htaccess, mas ainda tenho o mesmo problema. Desative o plug-in também, mas não corrija o problema do permalink.
Jaymin,
56

Basicamente, o arquivo .htaccess deve existir e o httpd.conf deve estar correto.

No meu caso, alterei o arquivo /etc/apache2/apache2.conf na seção:

<Directory "/var/www/html">

Linha alterada é:

AllowOverride None

para

AllowOverride All

E reinicie o servidor da web com

systemctl restart apache2
georgeos
fonte
1
obrigado, isso ajudou. No meu caso, a configuração AllowOverride estava faltando.
rag
1
Isso consertou para mim também. Estou usando a scotchbox vagrant pelo que vale a pena.
Matt Kaye
2
Quase sempre esse é o problema. Deve ser a melhor resposta.
Noel Baron de
Isso corrigiu o problema para mim - deveria ser a resposta aceita
Charles
52

Corrigindo esse problema é muito simples se você estava usando diferentes do permalinks defaulttais como Day and name, Month and name, Numeric, Post nameou Custom Structure, você só precisa

Faça login na sua área de administração: Settings > Permalinksque deve ser:http://yoursite.com/wp-admin/options-permalink.php

Escolha a Defaultconfiguração do link permanente e salve as alterações

Em seguida, você pode devolvê-lo à sua outra opção de link permanente anterior ou mantê-lo como defaultdesejar

Observe que esse problema pode ocorrer quando você move seu site de um domínio ou local para outro.

usama sulaiman
fonte
1
Isso me ajudou um pouco, eu tive alguns erros de banco de dados e depois todas as minhas páginas estavam 404. Mudar a opção permalink para outra opção (como simples) e de volta para a opção padrão corrigiu todos os meus links!
PaulBGD de
Fico feliz em saber disso :)
usama sulaiman
2
Resposta perfeita +100
handiansom
Como posso reverter para a configuração de link permanente padrão quando nem mesmo mysite.com/wp-adminestá funcionando?
J86 de
Resposta perfeita +10086
Aflext
29

Se o comportamento padrão ( example.com/?p=42) estiver funcionando, você deve:

  • Mude para o estilo de permalink de sua preferência: Admin: Settings > Permalinkse clique em Salvar. Às vezes, ele corrige o problema. Se não:
  • Verifique se o arquivo /path/to/wordpress/.htaccessfoi alterado e agora inclui a linha RewriteEngine On. Se não incluir a linha, é um problema de permissão do Wordpress.
  • Verifique se o módulo 'rewrite' está carregado: crie um arquivo PHP com

    <?php
      phpinfo()
    ?>

    nele, abra-o no navegador e pesquise mod_rewrite. Deve estar na seção 'Módulos carregados'. Se não estiver, habilite-o - veja o index.htmlarquivo padrão do apache para obter detalhes - no Ubuntu, você faz isso com o helper a2enmod.

  • Verifique se o servidor apache está examinando o .htaccessarquivo. aberto httpd.conf- ou é a alternativa do Ubuntu /etc/apache2/apache2.conf,. Nele, você deve ter algo como

    <Directory /path/to/wordpress>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
  • Depois de fazer essas alterações, não se esqueça de reiniciar o servidor apache. sudo service apache2 restart

tsvikas
fonte
20

SE tudo isso não funcionar, seu .htaccess está correto e o truque dos permalinks não funcionou, você pode não ter habilitado o mod rewite do apache2 .

Eu executei isso e meu problema foi resolvido:

 sudo a2enmod rewrite 
David Valenza
fonte
Pesquise mod_rewritena phpinfo();página para verificar se você ativou. É em Loaded Modulesofapache2
vanduc1102
9

Na interface de administração do WordPress, faça o seguinte:

  1. Vá para a configuração do administrador

  2. Clique no link permanente e selecione o nome da postagem no botão de opção.

  3. Role para baixo e você verá o .htaccesscódigo aqui, como.

    <IfModule mod_rewrite.c>
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /wordpress/index.php [L]
    </IfModule> 
  4. Copie o código e cole no .htaccessarquivo.
Mahesh singh chouhan
fonte
1
Onde encontro isso? Não há nada assim nos permalinks.
Boris_yo
@Boris_yo Pelo que eu sei, as regras aparecerão apenas se o seu htaccessarquivo for notgravável .. se for o wordpress, ele simplesmente o escreverá ...
Obmerk Kronen
1
Essa resposta é incrível! e nunca saberá disso a menos que use WP no Linux. Muito obrigado
Mayeenul Islam
7

Este erro está causando devido à desativação do mod de reescrita no documento apache httpd.conf, apenas descomente-o e aproveite os permalinks seo amigáveis

Asif Khan
fonte
4
  • Verifique se o diretório em .htaccess está correto
  • Verifique se os campos "siteurl" e "home" estão corretos
José carlos
fonte
1
Para mim, a casa era o problema. Eu conserto e tudo volta ao trabalho. Obrithankyou José Carlos.
Tiago Gouvêa
4

Tivemos o mesmo problema e o resolvemos verificando o error.log de nosso host virtual. Encontramos a seguinte mensagem:

AH00670: Opções FollowSymLinks e SymLinksIfOwnerMatch estão ambos desativados, então a diretiva RewriteRule também é proibida devido à sua capacidade semelhante de contornar as restrições de diretório: / srv / www / htdocs / wp-intranet /

A solução foi definir Options Alle AllowOverride Allem nossa configuração de host virtual.

Preto
fonte
3

Se você tiver acesso FTP à sua conta:

Primeiro, faça login em seu wp-admin e vá para Configurações> Links permanentes

Você deve ver algo na parte inferior que diz:

"Se o seu arquivo .htaccess fosse gravável, poderíamos fazer isso automaticamente, mas não é assim que essas são as regras do mod_rewrite que você deve ter em seu arquivo .htaccess. Clique no campo e pressione CTRL + a para selecionar tudo."

Se isso for verdade, faça o seguinte:

  1. Vá para as preferências do seu cliente FTP e certifique-se de que os arquivos ocultos sejam exibidos (varia dependendo do seu cliente FTP) - Se você não fizer isso, não será capaz de encontrar o seu arquivo htaccess

  2. Vá para a pasta onde seus diretórios wp-admin, wp-content, wp-includes estão localizados. Verifique o arquivo .htaccess. Se existir, pule para a etapa 4

  3. Se não existir, crie um novo arquivo em branco em seu programa de FTP chamado .htaccess

  4. Altere o CHMOD para seu arquivo .htaccess para 666 (sua preferência sobre como deseja fazer isso)

  5. Volte para a página Permalinks e edite a estrutura de links desejada. O problema deve ser resolvido!

  6. Certifique-se de alterar o chmod do arquivo htaccess de volta para 644 após terminar.

Apenas tive o mesmo problema e pareceu resolvê-lo instantaneamente! Boa sorte!

JEFF B
fonte
"mod_rewrite" esse era o problema, esqueci de habilitá-lo! Obrigado :)
Chemaclass
3

Na maioria das vezes, esse problema é corrigido simplesmente visitando a página Configurações -> Link permanente no administrador do WordPress e clique em Salvar (como várias outras respostas já apontaram). Quando esta página é acessada, o WordPress reescreve as diretivas no .htaccessarquivo que magicamente corrige o problema. O problema geralmente acontece depois de mover um site (o site quebra porque o.htaccess foi deixado para trás ou as configurações precisam ser atualizadas).

Se o WordPress não tiver as permissões corretas para gravar o .htaccessarquivo, um aviso aparecerá na parte superior da página e mais instruções na parte inferior quando as configurações forem salvas. Nesse caso, você mesmo precisa editar o .htaccessarquivo ou, melhor, corrigir as permissões desse arquivo. O arquivo está na raiz da instalação do WordPress. cdno diretório e sudo chmod 644 .htaccess. Você também pode querer verificar se o arquivo pertence ao grupo certo e as alterações necessárias comchown . Pergunte ao seu provedor de hospedagem se você não souber fazer isso.

Se você estiver em uma hospedagem compartilhada, provavelmente isso é tudo que você pode fazer. Se você ainda tiver o problema, convém falar com o suporte do provedor de hospedagem. Caso contrário, certifique-se de que o uso de .htaccessarquivos esteja habilitado no servidor, conforme @georgeos já sugeriu. Observe que httpd.confnem sempre é usado (o Ubuntu indica que está obsoleto, mas a documentação oficial do Apache ainda diz que costuma ser o arquivo de configuração principal ). /etc/httpd/conf/httpd.confe /etc/apache2/apache2.confparecem ser os locais mais comuns para este arquivo. Encontre o bloco para a pasta pública, geralmente<Directory /var/www/> e certifique-se de que a AllowOverridediretiva esteja definida como All. Se estiver definido como None, seu .htaccessarquivo será simplesmente ignorado pelo servidor.

mrtnmgs
fonte
2

Você pode ter .htaccess não permitido nas configurações do webhost. A configuração de permalinks padrão funcionaria nesse caso.

Fanky
fonte
1

Caso 1: - Vamos pensar se migramos um site de uma hospedagem para outra se vemos esse tipo de problema.

Solução: - Simplesmente vá para o código do arquivo .htaccess de cópia do servidor antigo e cole no novo arquivo .htaccess do servidor. 99% funciona.

Navruk
fonte
0

Estou com o mesmo problema e então removi o Apache e fiz de novo e o problema foi resolvido.

boomz
fonte
0

Basta acessar Configurações-> Link permanente em seu painel e o botão Salvar alterações no último. \

Deepak Sharma
fonte
0

Acabei de alterar o permalink para 'mês e dia' de todas as postagens ao definir> permalink.

Agora todas as postagens estão abertas e funcionando bem.

Novamente, mudei o nome de todas as postagens para seu permalink real. Está funcionando bem novamente.

Este método funcionou para mim :-)

Shani Deshwal
fonte
0

Para usuários nginx

Use o seguinte em seu arquivo conf para seu site (geralmente /etc/nginx/sites-available/example.com)

location / { try_files $uri $uri/ /index.php?q=$uri&$args; }

Isso transfere todas as solicitações de permalink para index.php com uma string URI e argumentos fornecidos. Faça um systemctl reload nginxpara ver as alterações e os links que não são da página inicial devem carregar.

ABCTaylor
fonte
0

Antes de tentar fazer qualquer alteração no permalink ou na configuração do servidor, verifique seu arquivo .htaccess. Este é principalmente um problema de arquivo .htaccess corrompido ou em branco. Redefina o arquivo htaccess para o padrão

# 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
Mustafa sabir
fonte
0

depois de 2 longos dias, a solução foi adicionar options +FollowSymLinksao topo do meu .htaccessarquivo.

Ahmad Ali
fonte
-1

Eu tive esse problema não há muito tempo. Eu tinha redefinido meu permalink para o padrão ou apenas salvei, atualizei temas / core para (4.7.4) / plugins, desativei todos os plug-ins, mudei para o tema padrão, banco de dados otimizado, .htaccess já é o padrão, verifiquei as permissões de arquivo, mod_rewrite está ativado .

Até agora nada funciona, o que funciona são os posts, a página nova, a página / contact EXCETO as páginas antigas.

Basicamente, as páginas / URLs que não estão funcionando são:

/breeding
/training
/training/*
/breeding/*

Por fim, encontrei estes arquivos na pasta raiz:

/breeding.php e /training.php

Renomei os dois arquivos e as páginas acima funcionaram.

Loreto Gabawa Jr.
fonte