Acalmando o Wordpress - 404 amigável

Eu gosto muito do Wordpress, muito mesmo. Utilizo-o em vários blogs e indico à clientes e amigos. Ele tem uma interface mais amigável que o Movable Type, tem mais acessórios e mais fáceis de instalar que o B2Evo, é completamente gratuito, e tem muitos templates prontos disponíveis neste meio de mundo.

Só tenho duas resalvas:

  1. O consumo de recursos muito alto para sites de grande porte
  2. Um grande defeito, ele joga todo erro 404 em uma página dinâmica quando você usa URL amigável.

Snifers varrem seu site em busca de falhas de segurança que na imensa maioria das vezes não existe, indo bater nas 404. Crawlers vão fazer buscas por links que já podem não mais existir, também indo dar de cara em erros 404. Sem contar, é claro, com os 404 feitos por usuários, e por aí vai.

Com a política de responder todo 404 com uma página dinâmica, o Wordpress termina por fazer com que qualquer pequeno arquivo que seja retirado do site, se transforme em uma requisição de página, aí a coisa vira um problema, e escalona imensamente. Basta um pequeno gif inexistente para começar a irritação.

Ok, em blogs pequenos, o problema passa desapercebido, mas à medida que o crescimento acontece, o problema cresce de forma geométrica.

Por conta disso eu resolvi incluir um pequeno hack dentro das páginas 404 do Wordpress nos sites em que tenho acesso, à fim de torna-las mais amigáveis aos servidores,.

O hack é este:

<?php
if ( eregi(".*\.([A-Za-z]{2,6})$”,$_SERVER[REQUEST_URI]) && !eregi(”\.(htm|html|shtml|php|php4|cgi|txt)$”,$_SERVER[REQUEST_URI]) ) {
header("HTTP/1.0 404 Not Found");
die("");
}
?>

O hack funciona através de condições determinadas à partir da URL invocada, sendo:

  1. SE a URL terminar em um arquivo com extensão de 2 a 5 caracteres, *e*
  2. Esta extensão seja diferente de htm/html/shtml/php/php4/cgi/txt.

Se as duas condições se realizarem, a requisição será considerará como para algum arquivo que seja componente de página (uma imagem ou javascript que estejam faltando). Neste caso, ele bloqueia a execução da página 404 do Wordpress, não fazendo as requisições dinâmicas, e fazendo com que o servidor mande uma resposta vazia à quem está solicitando. Poupando drasticamente o processamento e consumo de CPU.

Exemplo: http://cybervida.com.br/teste.jpg

Caso as condições não sejam obedecidas, o script deixa o 404.php ser normalmente executado.

Exemplo: http://cybervida.com.br/teste.html

É simples e eficiente. Eu testei em um site que estava dando vários picos de consumo de servidor, e depois de instalado o consumo de recursos ficou recatado como uma moça, sem nenhum detrimento para o funcionamento do site.

Instalando:

Eu dei preferência à instalar o hack no 404.php, à fim de não mexer nos arquivos principais do Wordpress, ademais, em casos de upgrade, o 404.php não vai mudar, e você não corre o perigo de sem querer desativar o hack.

  1. Abra o arquivo 404.php (em algum editor de texto, ou mesmo na página de edição de aquivos da sua interface de administração.
  2. Copie o código que está na caixa
  3. Cole na primeira linha do 404.php
  4. Salve o arquivo. (Se tiver feito a edição localmente, faça o upgrade para o servidor).

Opcionalmente, você pode colocar uma mensagem entre as aspas do comando die(“”), isso exibirá uma pequena mensagem, tal como eu fiz aqui no Cybervida.



Os links abaixo têm conteúdo relacionado ao que você acabou de ver:
-Wordpress 2.5 - primeiras impressões…
-Duas dicas para quem usa Wordpress
-Arranha-céu de arquivos
Se você está vendo as imagens "anti-leech", force o recarregamento da página com CTRL+F5 (no caso de Firefox ou Internet Explorer - Windows) ou CTRL+R no Linux.

3 Comentário(s)

  1. Alê | Sep 14, 2007 | Reply

    Opa,
    Interessante mas… (leigo falando), executar esse pequeno script é menos custoso que exibir uma página 404?

    [Responder Este Comentário]

  2. Rafael Dourado | Nov 27, 2007 | Reply

    Dá para transformar isso num plugin não?

    [Responder Este Comentário]

  3. Gilberto "Knuttz" | Nov 27, 2007 | Reply

    Rafael,

    eu acho que dá, porque dá uma preguiça danada instalar isso nos 404.php, neste tema mesmo ele está desinstalado.

    [Responder Este Comentário]

2 Trackback(s)

  1. Sep 14, 2007: Páginas 404 mais criativas e amigáveis
  2. Jan 4, 2008: Plugin Wordpress - Coloque uma busca nas páginas de erro 404 | Blogadão

Comente!

Ninguém é obrigado a concordar com o que está escrito neste blog, aliás, eu até encorajo opiniões contrárias, uma vez que acredito aprender com quem discorda ARGUMENTANDO, mas adianto que os seguintes tipos de comentários não serão aprovados:
  1. Que contenham discriminação de cunho racial, sexual ou religioso
  2. Que venham pregar religiões, qualquer uma
  3. Que falem mal sem argumentar e/ou de forma anônima
  4. Que incidam em crimes de injúria, calúnia ou difamação
  5. Esquerda pop ou qualquer outra coisa de recheio sofista
O objetivo disto não é cercear a opinião, serve apenas para garantir um bom nível às discussões, bem como afastar os anônimos covardes que gostam de bater sem mostrar a cara.

Para que não me torrem a paciência, fica o aviso: este blog publica posts patrocinados, estes posts são marcados no topo pela categoria "parceiros", e ao final do texto por uma linha seguida de um convite à outros que queiram patrocinar um review de produto ou serviço, bem como divulgar promoções. Se você por qualquer motivo achar ruim, por gentileza, queixe-se à Sua Santidade o Papa, já que eu não perderei tempo me estressando com isso.