Tutorial: Como redirecionar erro 404 no Wordpress

  • Autor Autor Cicklow
  • Data de início Data de início
Este tópico foi traduzido automaticamente do espanhol. Ver original
Pessoalmente não uso, já que é como ter anestesia geral...
Nunca se sabe onde há erros para consertar.
 
acho que já não funciona, pois no seu demo :ambivalence:
 
O problema deste código é que devolve um 302:

Inserir CODE, HTML ou PHP:
<?php
header ('HTTP/1.1 404 Not Found');
header('location: /');
die();
?>

Resultado:

Inserir CODE, HTML ou PHP:
status HTTP/1.1 302 Moved
Temporarily


O código mais completo seria este:

Inserir CODE, HTML ou PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://dominio.com/");
exit();
?>

Resultado:

Inserir CODE, HTML ou PHP:
HTTP/1.1 301 Moved
Permanently

A gosto do consumidor.
Abraços!
 
Muito bom. Obrigado por compartilhar. :encouragement:
 
Esta dica é muito fácil de implementar e o que fazemos é que, se algo não for encontrado em nosso blog (não com o buscador, mas erro 404), redirecionamos para o início. Só temos que criar um arquivo chamado 404.php na pasta do nosso tema com este code:
PHP:
<?php
	header ('HTTP/1.1 404 Not Found');
	header('location: /');
	die();
?>

Abraços e boa sorte! 🙂

Olá, achei muito boa a sua contribuição, mas também seria possível criar uma página 404 que diga, por exemplo: "Página não encontrada, você será redirecionado para a Página Principal, Muito Obrigado" e que automaticamente te redirecione depois de alguns segundos para que o usuário possa ler a mensagem. É só uma ideia, se alguém souber como fazer, seria bom que compartilhasse. Obrigado de qualquer forma.
 
Olá, achei muito boa a sua contribuição, mas também seria possível criar uma página 404 que diga, por exemplo: "Página não encontrada, você será redirecionado para a Página Principal, Muito Obrigado" e que automaticamente te redirecione depois de alguns segundos para que o usuário possa ler a mensagem. É só uma ideia, se alguém souber como fazer, seria bom que compartilhasse. Obrigado de qualquer forma.

sisi, é só um code de redirecionamento Meta refresh - Wikipedia, the free encyclopedia
 
Muito obrigado, era exatamente o que eu precisava.
 
No meu caso, como uso Nginx, não tenho Htaccess, mas este código na web funciona perfeitamente.

Façam com htaccess e vocês economizam ter que colocar em cada página.


---------- Post adicionado em 20-set-2013 hora: 18:32 ----------

Me parece uma má ideia, já que, como o cicklow coloca, todos os links que o Google encontrar apontarão para a página principal e, da outra forma, posicionará uma página 404.

Olá, achei muito boa a sua contribuição, mas também seria possível criar uma página 404 que diga, por exemplo: "Página não encontrada, você será redirecionado para a Página Principal, Muito Obrigado" e que automaticamente te redirecione depois de alguns segundos para que o usuário possa ler a mensagem. É só uma ideia, se alguém souber como fazer, seria bom que compartilhasse. Obrigado de qualquer forma.


---------- Post adicionado em 20-set-2013 hora: 18:34 ----------

Você tem muita razão.

Eu criei o 404.php com este código e, com o comando cp do Ubuntu, ordenei que ele fosse colado em todos os meus sites.
A automação e a simplicidade economizam muito tempo.
da mesma maneira que subimos o 404.php, teremos que ficar editando o .htaccess para cada site... -.-

- - - Atualizado - - -



sim, é a mesma coisa, mas nesse caso você tem que ficar editando o dominio.tld para cada site que subir o 404.php, com o code que uso redireciona para o início do blog, seja qual for o blog.


---------- Post adicionado em 20-set-2013 hora: 18:37 ----------

Verdade, mas aqui estamos falando de um ou dois erros.
Não tenho milhares de erros 404.
E tenho muitos amigos com sites e plugins que fazem exatamente isso.
Redirecionam o erro 404 para a entrada com mais visitas.
Então não há problema com isso.

O problema é quando você tem muitos domínios vazios redirecionados para esse site ou muitos links quebrados.


Como escrevi em outro post..


O 404 é 404 não te prejudica no posicionamento e vocês podem ver aqui ¿Perjudican los 404 a mi sitio web? - El Blog para Webmasters de Google não tentem fazer nada além de personalizar esse template para tentar baixar a taxa de rejeição, é o mais recomendável e saudável para o buscador. O que acontece é que, uma vez que o bot encontra esse 404, você será informado no WMT, o que você faz é marcá-lo como solucionado e solicitar a remoção de URL; qualquer outra coisa que você fizer gerará problemas que podem levar a uma penalização.

Ou seja... se no Google você tem indexada uma URL com "X" título, quando clicarem devem abrir essa mesma URL com o mesmo título "X". Se não for assim, DEVE abrir a página de erro 404, caso contrário pode ser interpretado como manipulação, conteúdo duplicado ou erro na estrutura do site, todos piores do que informar o que realmente acontece: "A página não existe".


Mais uma vez, não recomendo essa ação.
 
Obrigado, acabei de implementar!
Abraços
 
obrigado, implementei no meu site. 😛irate:
 
Muito obrigado, funciona bem e é simples, um abraço.
 
cicklow, desculpa reviver, mas isso pode ser aplicado em smf?
Esta dica é muito fácil de implementar e o que fazemos é que, se algo não for encontrado em nosso blog (não com o buscador, mas erro 404), redirecionamos para o início. Só temos que criar um arquivo chamado 404.php na pasta do nosso tema com este code:
PHP:
<?php
	header ('HTTP/1.1 404 Not Found');
	header('location: /');
	die();
?>

Abraços e boa sorte! 🙂
 
cicklow, desculpa reviver, mas isso pode ser aplicado em smf?

o code php que postei funciona para tudo... não só wordpress... o que eu não saberia é em que parte do smf colocá-lo... já que não uso...
 
obrigado, instalei um mod que traz essa parte dentro de um php
Inserir CODE, HTML ou PHP:
// Возвращаемые коды состояния, в зависимости от ситуации
	if (!empty($modSettings['optimus_404_status']))
	{
		if (!empty($board_info['error']))
		{
			if ($board_info['error'] == 'exist') // Страница не существует?
			{
				header('HTTP/1.1 404 Not Found');
				loadTemplate('Optimus');
				$context['sub_template'] = '404';
				$context['page_title'] = $txt['optimus_404_page_title'];
			}
			
			if ($board_info['error'] == 'access') // Нет доступа?
			{
				header('HTTP/1.1 403 Forbidden');
				loadTemplate('Optimus');
				$context['sub_template'] = '403';
				$context['page_title'] = $txt['optimus_403_page_title'];
			}
		}
	}
será que poderia fazer algo aí?
o code php que postei funciona para tudo... não só wordpress... o que eu não saberia é em que parte do smf colocá-lo... já que não uso...
 
obrigado, instalei um mod que traz essa parte dentro de um php
Inserir CODE, HTML ou PHP:
// Возвращаемые коды состояния, в зависимости от ситуации
	if (!empty($modSettings['optimus_404_status']))
	{
		if (!empty($board_info['error']))
		{
			if ($board_info['error'] == 'exist') // Страница не существует?
			{
				header('HTTP/1.1 404 Not Found');
				loadTemplate('Optimus');
				$context['sub_template'] = '404';
				$context['page_title'] = $txt['optimus_404_page_title'];
			}
			
			if ($board_info['error'] == 'access') // Нет доступа?
			{
				header('HTTP/1.1 403 Forbidden');
				loadTemplate('Optimus');
				$context['sub_template'] = '403';
				$context['page_title'] = $txt['optimus_403_page_title'];
			}
		}
	}
será que poderia fazer algo aí?

em TEORIA hahaha ficaria...
PHP:
if (!empty($modSettings['optimus_404_status']))
	{
		if (!empty($board_info['error']))
		{
			if ($board_info['error'] == 'exist') // Страница не существует?
			{
				header ('HTTP/1.1 404 Not Found');
				header('location: /');
				die();
				loadTemplate('Optimus');
				$context['sub_template'] = '404';
				$context['page_title'] = $txt['optimus_404_page_title'];
			}
			
			if ($board_info['error'] == 'access') // Нет доступа?
			{
				header('HTTP/1.1 403 Forbidden');
				loadTemplate('Optimus');
				$context['sub_template'] = '403';
				$context['page_title'] = $txt['optimus_403_page_title'];
			}
		}
	}
modifica isso e veja se funciona 🙂
 
não 😕 :encouragement:
em TEORIA hahaha ficaria...
PHP:
if (!empty($modSettings['optimus_404_status']))
	{
		if (!empty($board_info['error']))
		{
			if ($board_info['error'] == 'exist') // Страница не существует?
			{
				header ('HTTP/1.1 404 Not Found');
				header('location: /');
				die();
				loadTemplate('Optimus');
				$context['sub_template'] = '404';
				$context['page_title'] = $txt['optimus_404_page_title'];
			}
			
			if ($board_info['error'] == 'access') // Нет доступа?
			{
				header('HTTP/1.1 403 Forbidden');
				loadTemplate('Optimus');
				$context['sub_template'] = '403';
				$context['page_title'] = $txt['optimus_403_page_title'];
			}
		}
	}
modifica isso e veja se funciona 🙂
 
não 😕 :encouragement:

hehe me diga se dá erro ou o que... mas se não redireciona teria que aparecer um erro... tem um die()... isso mata o php (ou seja, não continua nada a partir daí)
 

mmm o problema vem do LiteSpeed, acho que não suporta bem o controle de erros 404... ao gerar o cabeçalho 404 o que ele faz é iniciar o litespeed com isso que você vê na tela... no seu caso teria que ver de outro modo...
edita o .htaccess do seu site e adiciona isso (esse code o que faz é que se ocorrer um erro 404 ele abre esse arquivo: redir.php, e esse arquivo redireciona para o início):
Inserir CODE, HTML ou PHP:
ErrorDocument 404 /redir.php

e cria um redir.php com isso:
PHP:
<?php
    header ('HTTP/1.1 404 Not Found');
    header('location: /');
    die();
?>
 
muito obrigado, fiz como você diz e subi o redir.php para o diretório principal do fórum mas agora a página fica em branco
mmm o problema vem do LiteSpeed, acho que não suporta bem o controle de erros 404... ao gerar o cabeçalho 404 o que ele faz é iniciar o litespeed com isso que você vê na tela... no seu caso teria que ver de outro modo...
edita o .htaccess do seu site e adiciona isso (esse code o que faz é que se ocorrer um erro 404 ele abre esse arquivo: redir.php, e esse arquivo redireciona para o início):
Inserir CODE, HTML ou PHP:
ErrorDocument 404 /redir.php

e cria um redir.php com isso:
PHP:
<?php
    header ('HTTP/1.1 404 Not Found');
    header('location: /');
    die();
?>


---------- Post adicionado em 27-abr-2014 hora: 11:58 ----------

o error_log me avisa de erros nas linhas 2 e 3 do redir.php
 
Voltar
Topo