Acalmando o Wordpress - 404 amigável
Por Gilberto "Knuttz" em 6/03/07 em Software
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:
- O consumo de recursos muito alto para sites de grande porte
- 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:
- SE a URL terminar em um arquivo com extensão de 2 a 5 caracteres, *e*
- 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.
- 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.
- Copie o código que está na caixa
- Cole na primeira linha do 404.php
- 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
tag this | permalink | trackback url
Tags desta postagem:










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]
Rafael Dourado | Nov 27, 2007 | Reply
Dá para transformar isso num plugin não?
[Responder Este Comentário]
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]