.htaccess Personalizado para aumentar a Segurança do WordPress

25 junho, 2020
O .htaccess é o arquivo de configuração de servidores web Apache. Os códigos aqui descritos para aumentar a segurança do seu WordPress se aplicam apenas a hospedagens Linux que aceitam esse tipo de instrução. Acompanhe como você poderá blindar o seu projeto do acesso direto a arquivos, Script Injection, proteção do wp-config.php e uma série de outras otimizações através do uso do .htaccess.

Vale lembrar que as técnicas utilizadas para aumentar a segurança no WordPress com .htaccess possuem muito eficácia, pois inserindo as instruções na pasta raiz do servidor, as medidas passam a servir para todos os arquivos ali inseridos; incluindo suas subpastas.


Corrigindo Problemas no .htaccess (Remover index.php dos Links Permanentes)

Antes de realizar grandes mudanças em seu arquivo .htaccess, esteja ciente que após edições equivocadas eventualmente o site pode retornar erro HTTP 500 e deixar de funcionar. Em outros casos é possível acontecer de sua URL conter o endereço intercalado a /index.php/ mesmo após ter sido atualizadas as opções de reescrita.

Em ambos os casos, tenha sempre a mão uma cópia das instruções originais do .htaccess, apenas com os códigos do WordPress; como segue abaixo:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /meu-site/
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /meu-site/index.php [L]
 </IfModule>

A instrução /meu-site/ diz respeito ao diretório onde o WordPress encontra-se instalado. Em grande parte dos casos a instalação é feita na raiz do servidor; nessa situação o código .htaccess correto será:

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

Sobre o problema com o arquivo index.php, saiba que esse arquivo fica na pasta raiz da instalação do WordPress e é chamado toda vez que o site é requisitado. A incorporação dele no endereço das páginas, posts e demais conteúdos se dá em razão de configurações do servidor de hospedagem (caso o problema persista, mesmo após resetar os códigos, entre em contato com o serviço que você contratou).


Bloquear Acesso Direto aos arquivos PHP do WordPress

Um modo muito eficaz para aprimorar a segurança no WordPress é impedir que os arquivos do sistema, em especial os códigos PHP, sejam acessados e possam ser executados fora do escopo do WordPress.

Impedir o acesso direto a arquivos do tipo PHP contribui para prevenção de ataques possíveis de serem realizados mediante brechas nas permissões do servidor.


Impedir a listagem de diretórios

O WordPress possui como boa prática inserir em todos os diretórios de sua estrutura de pastas um arquivo index.php vazio. Isso impede que o servidor faça a listagem dos arquivos do diretório em questão.

Faça um teste em seu WordPress, acesse http://seuwordpress.com.br/wp-content/. Você verá provavelmente uma tela em branco (resultado do arquivo index.php do WordPress inserido nessa pasta).

Agora tente acessar http://seuwordpress.com.br/wp-content/uploads/. O quê aconteceu?

Caso você tenha visto uma tela parecida com essa acima, você tem um grande problema a resolver. Isso porquê além de mostrar o seu conteúdo para as pessoas, isso pode representar que o servidor não possui tanto cuidado com a segurança.

Resolva esse problema inserindo, dentro do arquivo .htaccess (pode ser antes da instrução #BEGIN WordPress), a seguinte linha:

Options All -Indexes

Bloquear acesso a pasta wp-includes do WordPress

Feito o bloqueio da listagem de diretórios, agora você precisa bloquear o uso indevido dos arquivos do WordPress. A estrutura de pastas do WordPress contém as pastas:

  • wp-admin – para agrupar os arquivos usados no Dashboard;
  • wp-content – para os recursos extras, uploads;
  • wp-includes – para os arquivos a serem usados tanto no painel administrativo, quanto aos recursos extras.

Começando pela pasta wp-includes, faça o bloqueio dos códigos PHP inserindo dentro do .htaccess as seguintes instruções:

RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]

Impedir acesso aos arquivos da pasta wp-admin do WordPress

Em continuidade, a próxima pasta a ser protegida será a wp-admin. Nesse caso o bloqueio deve ser feito com cuidado pois alguns arquivos dessa pasta precisam necessariamente ser executados individualmente; como é o caso do wp-admin/admin-ajax.php usado para as requisições AJAX no WordPress.

Por isso as instruções do .htaccess serão para impedir que os arquivos dessa pasta sejam executados por outro domínio. Desse modo a segurança do WordPress fica garantida pois apenas os códigos do seu servidor podem transferir dados via POST aos arquivos da pasta wp-admin.

RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_REFERER} !^http://(.*)?seuwordpress.com.br/ [NC]
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$
RewriteRule ^(.*)$ - [F]

Não permitir o acesso direto aos arquivos PHP dos plugins

No caso dos Plugins, a prevenção a ser feita será impedir que qualquer arquivo do tipo PHP seja executado individualmente. Como os Plugins necessitam que o WordPress tenha sido carregado para executar como esperado, não faz sentido fazer a chamada dos arquivos de maneira isolada.

RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L]

No entanto talvez algum plugin que você tenha feito não siga essa estrutura de funcionamento e você faça chamadas diretas aos arquivos PHP; você pode então permitir apenas o acesso aos arquivos desse seu Plugin. Veja abaixo no exemplo a exceção da regra para rodar os arquivos do Plugin Query Monitor.

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/query-monitor/

Caso você faça a chamada de apenas um ou poucos arquivos do seu Plugin de modo direto, você também pode optar por criar exceções aos arquivos e não ao diretório completo. Abaixo o exemplo liberando o acesso ao arquivo index.php do Plugin Kirki.

RewriteCond %{REQUEST_URI} !^/wp-content/plugins/kirki/index.php

Controlar o acesso aos arquivos PHP dos Temas

Para os Temas o controle do acesso direto aos arquivos PHP ocorre do mesmo modo que os Plugins. Basta que você troque o endereço da pasta de Plugins para a pasta de Temas e no caso das exceções, especificar qual pasta ou arquivo pode ser acessado via endereço absoluto.

RewriteCond %{REQUEST_URI} !^/fotologia-wp/wp-content/themes/meu-tema/
RewriteCond %{REQUEST_URI} !^/fotologia-wp/wp-content/themes/meu-tema/arquivo-permitido.php
RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]

Bloquear acesso direto a certo tipos de arquivos da pasta wp-content

A proposta é ter controle sobre os arquivos da pasta wp-content inteira. Essa medida de segurança requer a criação de um novo arquivo .htaccess a ser inserido dentro da pasta wp-content. Dentro dele insira apenas as seguintes intruções:

Order Allow,Deny
Deny from all
<FilesMatch "\.(css|js|html|jpg|jpeg|png|gif)$" >
Allow from all
</FilesMatch>

Ao fazer isso você informa ao servidor que apenas os arquivos com as extensões previstas podem ser acessados diretamente via caminho absoluto (ex: http://seuwordpress.com.br/wp-content/pagina.html).

Lembrando que esse arquivo .htaccess não se trata do arquivo na raiz do servidor e portanto não traz as instruções da estrutura de reescrita responsável pelos links permanentes do WordPress. O código é apenas esse mostrado acima mesmo.


Protegendo o arquivo wp-config.php via .htaccess

O arquivo wp-config.php é um arquivo muito importante para o WordPress e por isso contém informações muito sensíveis (conexão com banco de dados, chaves secretas, prefixo das tabelas etc). Em geral um atacante não conseguiria acessar essas informações pois mesmo que ele tente acessar esse arquivo diretamente, o servidor web iria tentar executar o arquivo .php e retornar alguma saída.

Contudo caso algum problema aconteça com o módulo PHP do servidor, os arquivos .php no lugar de serem executados serão enviados para download aos usuários. Existem também outros cenários em que o atacante pode obter o arquivo wp-config.php. Nos últimos meses foram descobertas diversos plugins com brechas que permitiam entre outras coisas a obtenção do arquivo wp-config.php.

Para se prevenir em caso desses possíveis erros é possível bloquear o acesso ao arquivo wp-config.php via .htaccess, para isso basta colocar o código abaixo no final do conteúdo do arquivo .htaccess da sua instalação do WordPress.

<files wp-config.php> 
order allow,deny 
deny from all 
</files>

Personalizar páginas de erros do servidor via .htaccess

Uma vez que você aplicou essa medida de segurança em seu WordPress, ao tentar acessar qualquer arquivo cuja extensão não seja permitida, o visitante receberá a tela de erro 403 (Acesso proibido). Por padrão o servidor possui uma tela para esse tipo de erro; pode ser uma tela personalizada ou alguma mensagem do tipo:

A fim de permitir que você faça essa personalização por conta própria, informando um arquivo específico para ser executado nesses casos; você pode informar no seu .htaccess:

ErrorDocument 403 /erros/acesso-proibido.html

Note que foi referenciado um arquivo específico, no entanto você pode direcionar esse acesso a uma URL do seu WordPress, se assim preferir.

ErrorDocument 403 http://seuwordpress.com.br/acesso-proibido/

E o mesmo pode ser feito para os outros tipos de erros de acordo com o código do situação do HTTP:

ErrorDocument 400 /erros/requisicao-invalida.html
ErrorDocument 404 /erros/pagina-nao-encontrada.html
ErrorDocument 500 /erros/erro-interno-do-servidor.html

Impedir Hotlink (linkagem externa) das imagens do seu WordPress

Proteja seu WordPress do Hotlink. Um hotlink é um link feito para arquivos hospedados em outro servidor. O grande problema desse tipo de linkagem é o consumo de recursos do servidor onde o arquivo encontra-se hospedado.

Imagine que você possui em seu site uma imagem muito bem produzida e posicionada nas buscas. Caso algum outro site faça uso dessa imagem inserindo apenas a referência da imagem ao seu servidor, toda requisição feita nesse outro site vai consumir seus recursos. Em código seria algo como:

// seu site está hospedado em http://seuwordpress.com.br/
// o código abaixo está em http://outrosite.com.br/
<img src="http://seuwordpress.com.br/imagem.jpg">

Isso pode acontecer para todo tipo de arquivo, e quanto mais ‘pesado’ o arquivo, mais consumo do seu servidor a cada requisição feita através de hotlinks.


Previna Hotlinks no WordPress

Previna esse tipo de problema inserindo algumas novas instruções ao arquivo .htaccess na raiz do servidor.

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?seuwordpress.com.br [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

As instruções permitirão o acesso apenas se a requisição for feita pelo seu próprio site. Você talvez queira abrir algumas excessões, como por exemplo permitir que as imagens sejam indexadas por algum outro site seu, site parceiros ou mesmo pelo Google Images. Nesse caso, crie novas excessões, além da exceção ao seu próprio domínio, do seguinte modo:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?seuwordpress.com.br [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(.*\.)?google\..* [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Uma variação do uso dessa técnica é ao invés de apresentar a tela de acesso proibido a tentativas de hotlink é exibir um arquivo vazio ou alguma imagem com informações de copyright. Assim, todas as requisições não permitidas de hotlink mostrarão esse conteúdo.

RewriteRule \.(jpg|jpeg|png|gif)$ http://seuwordpress.com.br/imagem-vazia.gif [NC,R,L]

Impedir Script Injection no WordPress

Cuidados com a segurança no WordPress são essenciais para a manutenção do seu projeto em perfeito funcionamento. Entre os diferentes tipos de ataques que um site pode sofrer, o Script Injection pode causar sérios danos ao seu site.

Esse ataque se caracteriza pela inserção de códigos (“injeção de scripts”) específicos que permitem tomar o controle de todo sistema; desde realizar certos processos do site sem a devida autorização a infectar os códigos com rotinas de SPAM, sobrescrita do site ou somente para “derrubar o servidor” mesmo.


WordPress protegido de ataques Script Injection

As tentativas de Script Injection podem ocorrer – entre outros meios – via passagem de parâmetros na URL do site ou via preenchimento de formulários. Por isso é muito importante que seus Temas e Plugins possuam o devido tratamento das transferências de informações entre uma página e outra, entre um arquivo e outro.

Trate as informações de input (variáveis de requisições GET e POST), faça a validação e sanitização dos dados antes de utilizá-los em seu código ou armazená-los em banco de dados.

Além desse cuidado essencial de preparar o seu código para se comportar bem, mesmo diante de ameaças; faça uso do .htaccess na raiz do seu servidor para que de nenhuma forma esses códigos mal intencionados possam trafegar em meio ao seu WordPress.

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

Um Erro de HTTP do tipo 403 (Acesso Proibido) será apresentado caso exista alguma referência a tag <script> dentro da requisição ou caso tenha ocorrido uma tentativa de alterar as variáveis GLOBALS ou _REQUEST do PHP.

20 dicas e truques extremamente uteis do .htaccess

25 junho, 2020

O .htaccess é, basicamente, um arquivo de configuração utilizado em servidores web, como o Apache, por exemplo (seu nome vem de “hypertext access“). O arquivo funciona a nível de diretórios e permite que administradores gerenciem e manipulem configurações e acessos de forma descentralizada.

Inserido em modo oculto (com a devida adição do “.” à frente do nome) nos diretórios (como por exemplo a pasta raiz “public_html” de cada website), o .htaccess força o servidor a interpretar suas instruções prioritariamente, desconsiderando, portanto, nestes casos, quaisquer configurações globais.

As configurações presentes no arquivo, vale lembrar, são aplicadas ao diretório no qual ele se encontra e também a todos os seus subdiretórios, caso existam. Vale também lembrar que a presença de um outro .htaccess em um subdiretório anula a ação do que se encontra um nível acima. Ou seja, o .htaccess do subdiretório passa a valer para o mesmo e também para todas as suas subpastas. E assim por diante. É sempre bom ficarmos atentos a estes detalhes.

Usando arquivos .htaccess, podemos, por exemplo, proteger diretórios com senhas, prevenir hotlinks (utilização de imagens hospedadas no seu servidor em outros locais, indevidamente e gastando a sua banda), configurar URLs amigáveis, etc. Trata-se de um arquivo bastante útil, e neste artigo vamos dar a você uma série de exemplos de utilização. 20 exemplos, para ser mais preciso.

Conteúdo:

Criando um arquivo .htaccess

Criar um arquivo .htaccess, aliás, é bastante simples. Tudo o que você precisa é de um editor de texto qualquer. Pode ser o PSPad, o Notepad++ ou até mesmo o Bloco de Notas padrão do Windows. Crie um novo arquivo e então salve-o como “.htaccess” (sem aspas, obviamente, e com o ponto antes do nome).

Dependendo do programa e do sistema operacional que você utilizar para a criação do arquivo, pode acontecer de ser gerado um arquivo chamado “.htaccess.txt”. Isto está errado, claro, mas é fácil consertarmos o “erro”: basta renomear o tal arquivo, removendo dele os caracteres desnecessários (no caso, “.txt“).

E agora vamos às dicas de utilização, lembrando antes que várias delas exigem a utilização do módulo “mod_rewrite” no servidor. Verifique antes de tudo se ele se encontra habilitado no Apache.

1) Bloqueando hotlinks em imagens

Para evitar que outros utilizem imagens hospedadas em seu servidor, “linkando” diretamente e assim gastando a sua banda, use o seguinte código em seu .htaccess:

  1. RewriteEngine on
  2. RewriteCond %{HTTP_REFERER} !^$
  3. RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?meusite.com [NC]
  4. RewriteRule \.(jpg|jpeg|png|gif)$ [NC,F,L]

Ao usar o código acima, qualquer site que tentar utilizar suas imagens será impedido de o fazer. Não se esqueça de substituir “meusite.com” com a URL e a TLD corretas. Por exemplo: “codigofonte.com.br/” , “meublog.net/”, etc.

Repare também que o código acima previne hotlinks em imagens com as extensões .jpg , .jpeg , .png e .gif . Você pode alterar também esta linha do código, adicionando novos tipos de arquivos, removendo, etc. Apenas lembre-se de respeitar a sintaxe.

Caso você deseje forçar a exibição de uma outra imagem no site “ladrão de imagens”, como por exemplo uma imagem contendo um alerta, com a sua URL, adicione a linha abaixo ao final do arquivo, logo abaixo de “RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]“:

  1. RewriteRule .*\.(jpg|jpeg|png|gif)$ /imagens/imagemalerta.jpg [L]

Lembre-se de que neste caso a imagem “imagemalerta.jpg” deverá existir dentro do diretório “/imagens/”, em seu servidor web.

Se ao invés de exibir uma outra imagem você desejar exibir simplesmente um erro 403 (Forbidden), utilize o código abaixo no lugar:

  1. RewriteRule .*\.(jpg|jpeg|png|gif)$ [F]

2) Protegendo seu arquivo .htaccess

Seguro morreu de velho, não é? Portanto, por que não proteger o arquivo .htaccess? Basta adicionar o seguinte código a ele mesmo:

<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>

 

3) Usando páginas de erro personalizadas

Para evitar que os visitantes caiam em páginas de erro padrão do Apache ou então nas famosas “404 Not Found” padrão, por exemplo (caso tentem acessar uma URL inexistente), você pode adicionar a seguinte linha ao seu .htaccess:

  1. ErrorDocument 404 /erros/notfound.html

Observe que a página “notfound.html” deve existir dentro do diretório “/erros/”. Você pode personalizá-la como bem entender, adicionando links para sua página principal, formulário de contato, etc.

Para cobrir outros tipos de erro, utilize também os códigos abaixo:

  1. ErrorDocument 400 /erros/badrequest.html
  2. ErrorDocument 401 /erros/authreqd.html
  3. ErrorDocument 403 /erros/forbid.html
  4. ErrorDocument 500 /erros/serverr.html

Da mesma maneira, não se esqueça de criar as páginas necessárias e enviá-las para o diretório “/erros/”, conforme explicado acima.

4) Compressão via .htaccess

Caso você deseje utilizar compressão GZIP no servidor, para economizar banda, para “deixar os motores de busca mais felizes”, etc, insira o código abaixo em seu .htaccess, lembrando que para que ele funcione, o módulo mod_gzip deve estar habilitado no Apache:

<ifmodule mod_gzip.c="">
mod_gzip_on       Yes
mod_gzip_dechunk  Yes
mod_gzip_item_include file      \.(html?|css|js|php|pl)$
mod_gzip_item_include handler   ^cgi-script$
mod_gzip_item_include mime      ^text/.*
mod_gzip_item_include mime      ^application/x-javascript.*
mod_gzip_item_exclude mime      ^image/.*
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifmodule>

Já para utilizar a compressão com o mod_deflate (não se esqueça de que este módulo deve estar habilitado no Apache), utilize o código abaixo:

<ifmodule mod_deflate.c="">
<filesmatch .(.jpg|.gif|.png|js|phpcss)$="">
SetOutputFilter DEFLATE
</filesmatch>
</ifmodule>

5) Evitando a listagem de diretórios

Você pode também utilizar o .htaccess para evitar a listagem de diretórios. Para evitar que o conteúdo de um diretório seja exibido quando algum usuário o acessar (por exemplo, quando alguém acessa “www.seusite.com.br/nomedapasta” ou “www.seusite.com.br/imagens”.

Use o snippet abaixo:

  1. Options Indexes

6) Controlando o acesso a arquivos e diretórios

Digamos que você deseja evitar que terceiros acessem determinados arquivos e pastas em seu site. Você possui um script qualquer instalado, por exemplo, e deseja evitar que visitantes acessem sua pasta “includes”.

Por outro lado, você precisa garantir que qualquer página do site em questão possa “chamar” sem problemas os arquivos contidos nesta pasta. Basta, então, adicionar um .htaccess com o seguinte conteúdo na tal pasta, no caso, a “includes”:

  1. # Acesso restrito!
  2. deny from all

Você pode também limitar o acesso apenas a uma determinada faixa de IPs:

  1. # Acesso restrito!
  2. order deny,allow
  3. deny from all
  4. allow from 192.168.0.1/24

Não se esqueça de alterar a faixa de IPs conforme sua necessidade.

E você pode também banir um determinado IP. Algum crawler insistente, por exemplo, que esteja sobrecarregando o sistema, ou então algum IP que você já sabe ser indesejado. Utilize o código abaixo:

  1. # Proibido…
  2. order allow,deny
  3. deny from 74.184.25.218
  4. allow from all

Altere o IP conforme sua necessidade.

7) Reescrevendo URLs – Tornando-as amigáveis

Com .htaccess, também podemos reescrever URLs. Podemos torná-las mais amigáveis, tanto para os motores de busca quanto para os visitantes. Digamos que você possua uma loja virtual e nela venda diversos produtos. Digamos, agora, que suas URLs possuem a seguinte estrutura:

Ora, é muito mais fácil, simples e amigável trabalhar com a estrutura do exemplo abaixo:

Confira os exemplos abaixo e utilize os que se adequarem às suas necessidades, lembrando sempre de realizar as alterações nas URLs, nos caminhos, etc:

Reescrevendo produto.php?id=12 para produto-12.html:

  1. RewriteEngine on
  2. RewriteRule ^produto-([09]+)\.html$ produto.php?id=$1

Reescrevendo produto.php?id=12 para produto/hub-usb/12.html:

  1. RewriteEngine on
  2. RewriteRule ^produto/([azAZ09_-]+)/([09]+)\.html$ produto.php?id=$2

Redirecionando URLs sem www para URLs com www:

  1. RewriteEngine On
  2. RewriteCond %{HTTP_HOST} ^seudominio.com
  3. RewriteRule ^ http://www.seudominio.com%{REQUEST_URI} [L,R=301]

Redirecionando URLs com www para URLs sem www:

  1. RewriteEngine On
  2. RewriteCond %{HTTP_HOST} ^www.(.*) [NC]
  3. RewriteRule ^(.*) http://%1/$1 [R=301,L]

8) Removendo extensões de arquivos das URLs

Você pode também remover as extensões dos arquivos das URLs com um arquivo .htaccess. Por exemplo, ao invés de seu visitante visualizar algo como contato.php na barra de endereços do navegador, ele pode visualizar simplesmente “contato”.

Use o código abaixo em um arquivo .htaccess:

  1. RewriteEngine on
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteCond %{REQUEST_FILENAME}\.html f
  4. RewriteRule ^(.*)$ $1.html

No exemplo acima, a extensão .html será removida/escondida. Você pode também usar o mesmo snippet para esconder outras extensões de arquivos, como por exemplo .php . Basta realizar as devidas substituições.

 

9) Protegendo um diretório com senha

Uma das funcionalidades mais usadas e bacanas do .htaccess: proteger um diretório qualquer com senha. Para acessar o diretório em questão (e, consequentemente, tudo o que estiver dentro dele), o visitante deverá informar um “usuário” e uma “senha”.

Observe que aqui deveremos utilizar dois arquivos: o .htaccess e o arquivo que conterá as senhas, o .htpasswd . O .htaccess você já sabe como criar, e para criar o arquivo das senhas, o .htpasswd , utilize este gerador online (isto porque as senhas devem ser transformadas em hashs MD5).

No site “Htpasswd Generator”, informe o “usuário” (username) e a “senha” (password). Em seguida clique no botão “Create .htpasswd file”. Repita o processo quantas vezes forem necessárias para transformar todas as senhas desejadas em hashs MD5.

O gerador fornece o resultado logo em seguida, e é isto que você deve copiar e colar no arquivo .htpasswd (um conjunto de usuário e senha por linha). Cada conjunto de “usuário” e “senha” é mais ou menos igual ao exemplo abaixo:

  1. teste:$apr1$7KeyxOFe$sEEZhgvhSMKkHQTbXkqjs0

Este procedimento também pode ser realizado através do SSH, vale lembrar. Use o comando abaixo no prompt após se conectar ao servidor:

  1. htpasswd c /home/usuario/.htpasswd nomedousuario

Onde “/home/usuario/” é o diretório onde o arquivo será gerado, e “nomedousuario” é, bem, o nome do usuário. Durante este procedimento você será solicitado a informar uma senha para o usuário em questão.

Para adicionar novos usuários (lembrando que você sempre será solicitado a informar as respectivas senhas), use o comando abaixo:

  1. htpasswd /home/usuario/.htpasswd nomedousuario2

Observe que nos comandos acima, o parâmetro “-c” foi utilizado para criar o arquivo .htpasswd já com um usuário. Já no segundo comando o parâmetro não é necessário, pois estamos adicionando um novo usuário (nomedousuario2) a um arquivo .htpasswd já existente. E assim por diante.

Mas, continuando, após a criação do .htpasswd, envie-o para um diretório acima de sua pasta raiz. Por exemplo, um nível acima de sua pasta “public_html” (/home/usuario/”, digamos).

Vamos agora à criação do .htaccess para a proteção do diretório, ressaltando que este arquivo deve ser enviado para a pasta que vai ser protegida:

  1. AuthType Basic
  2. AuthName “Acesso Restrito!”
  3. AuthUserFile /home/usuario/.htpasswd
  4. Require validuser

Observe o seguinte:

  • AuthName: é uma mensagem que pode ser customizada conforme você desejar. Esta mensagem aparecerá na janela na qual serão soliciados os dados de login;
  • AuthUserFile: caminho absoluto para o arquivo .htpasswd;

Pronto. Seu diretório foi protegido com senha. Lembre-se de realizar as alterações necessárias relativas aos caminhos, nomes de pastas, usuários, senhas, etc.

 

10) Forçando redirecionamento de http para https (SSL)

  1. RewriteEngine On
  2. RewriteCond %{HTTPS} !on
  3. RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

11) Definindo páginas iniciais padrão

Você pode também definir no .htaccess quais páginas iniciais serão consideradas como páginas padrão/default, como páginas de índice (index):

  1. DirectoryIndex index.html index.php index.html

No exemplo acima, os arquivos index.htm, index.php e index.html serão considerados como páginas de índice.

Por outro lado, caso você deseje ter outro arquivo que não um index.html (ou qualquer outro index) como página inicial, basta utilizar um .htaccess da seguinte forma:

  1. DirectoryIndex empresa.html

No exemplo acima, sua página inicial será o arquivo “empresa.html”. Sempre que um visitante acessar o seu domínio, por exemplo, “www.seusite.com.br”, ele será automaticamente redirecionado para “www.seusite.com.br/empresa.html”.

12) Redirecionamento 301

Se você precisar mudar seu domínio este código é bastante útil. Com ele, você não perderá links internos e externos, visitantes, e também não terá problemas com os motores de busca.

Para redirecionar permanentemente (e também dizer aos motores de busca que trata-se de uma mudança permanente) um domínio inteiro para outro (um novo, por exemplo), utilize no antigo um .htaccess com o código abaixo:

  1. Options +FollowSymLinks
  2. RewriteEngine on
  3. RewriteRule (.*) http://www.seunovosite.com/$1 [R=301,L]

Não se esqueça de alterar “seunovosite.com” de acordo.

 

13) Banindo IPs

Digamos que você sofra ataques do tipo brute force, ou tenha problemas com spammers. Vamos imaginar qualquer situação problemática para seu site e/ou servidor, na qual você já tenha identificado os IPs problemáticos. É muito simples bloqueá-los através do .htaccess:

  1. allow from all
  2. deny from 200.143.89.154
  3. deny from 67.122.145.60
  4. deny from 74.14.13.246
  5. deny from 67.224.175.26

Observe que os IPs informados acima foram inseridos apenas a título de exemplo. Altere conforme sua necessidade. Caso seja necessário informar (bloqueando, assim) mais IPs, basta adicionar novas linhas “deny from”, seguidas do IP. E assim por diante.

14) Forçando downloads de determinados tipos de arquivos

Dependendo do arquivo e das configurações do servidor, este último pode oferecer ao visitante 2 opções após o clique em um link: baixar o arquivo para seu PC ou então abri-lo remotamente (documentos do Word, PDFs, etc).

Para forçar o download, evitando que a opção de escolha apareça para o visitante, utilize o código abaixo:

  1. AddType application/octetstream .pdf
  2. AddType application/octetstream .avi
  3. AddType application/octetstream .xls

No exemplo acima, todos os arquivos com extensões .pdf , .avi e .xls serão automaticamente baixados para o computador do visitante sempre que ele clicar nos links a eles correspondentes. Adicione novas linhas e/ou altere os tipos de arquivos conforme suas necessidades.

15) Bloqueando visitantes com base no “referring domain”

Você pode também impedir que determinados visitantes acessem seu site com base no “referring domain”, ou seja, com base no site que “indicou” o seu a eles. Digamos que exista algum link para seu site, por algum motivo, em algum “site duvidoso” na Rússia. Ou qualquer outro motivo, localização, etc:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} dominioproblematico1.com [NC,OR] RewriteCond %{HTTP_REFERER} dominioproblematico2.com [NC,OR] RewriteRule .* - [F] </ifModule>

Você pode incluir/editar os “domínios problemáticos” conforme suas necessidades, ou até mesmo adicionar mais.

16) Forçando UTF-8

Para evitar problemas de codificação e renderização com seus arquivos .html, por exemplo, você pode incluir o seguinte código em seu .htaccess para forçar o uso da codificação UTF-8:

<FilesMatch ".(htm|html|css|js)$">
AddDefaultCharset UTF-8
</FilesMatch>

 

17) Protegendo a área administrativa do WordPress

Se você utiliza o CMS WordPress, nunca é demais proteger sua área administrativa, prevenindo invasões e ataques. Crie um arquivo .htaccess conforme explicado abaixo e o coloque dentro da pasta /wp-admin/:

<Limit GET POST PUT>
order deny,allow
deny from all
allow from 79.187.22.68
</Limit>

Note que este é um método de proteção um tanto quanto drástico. Estamos aqui liberando o acesso à área administrativa do WordPress para um único IP. O seu, no caso. Altere o código acima e substitua “79.187.22.68″ pelo seu IP. Para descobri-lo, basta acessar este link ou este.

No Windows, você pode também acessar o prompt do DOS e digitar o comando abaixo, seguido de um <ENTER>:

  1. ipconfig

Já no Linux, utilize um dos comandos abaixo, também com um <ENTER> em seguida:

/sbin/ifconfig -a

Ou

ifconfig -a

 

OBS: esta proteção terá também um “custo”. Caso seu IP seja dinâmico, você terá que alterar o .htaccess acima praticamente todos os dias, removendo o IP “velho” e adicionando o “novo”. Mas a segurança extra vale a pena, é claro.

18) Protegendo o arquivo wp-config.php do WordPress

O arquivo wp-config.php do WordPress, localizado na raiz da instalação do sistema, é outro elemento importantíssimo do CMS. Ele guarda, por exemplo, informações da base de dados em utilização (nome do banco, usuário, senha). Isto dentre outros dados críticos.

Desabilitar o acesso a ele também é essencial para manter o seu blog em segurança.

Use o seguinte código:

<files wp-config.php>
order allow,deny
deny from all
</files>

19) Protegendo a pasta wp-content do WordPress

Outra área crítica do WordPress. É na pasta wp-content que se encontram arquivos de temas, de plugins e também os arquivos enviados para o servidor para a devida inserção em postagens, por exemplo (imagens, etc).

Utilize o código abaixo em um arquivo .htacess e o envie para a pasta “/wp-content/”:

Order deny,allow
Deny from all
<Files ~ “.(xml|css|jpe?g|png|gif|js)$”>
Allow from all
</Files>

O snippet acima fará com que ninguém (um hacker, por exemplo) consiga realizar o upload de outros tipos de arquivos além dos especificados no código.

20) Usando o cache do navegador

Que tal usar um recurso extra para acelerar o tempo de carregamento do site, forçando a utilização do cache do navegador? Assim, os browsers dos visitantes serão capazes de salvar elementos de seu website, de maneira tal que eles não serão baixados novamente e desnecessariamente, a cada novo acesso.

Isto garante economia de banda para o proprietário do site e para o visitante, obviamente:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>

Finalizando Informações sobre o Htaccess

Como você pôde perceber, o .htaccess é uma ferramenta extremamente valiosa. Um “simples” arquivo, que na verdade contém texto puro, trocando em miúdos, mas que é capaz de resolver muitos problemas ou dificuldades do dia a dia.

Uma ferramenta poderosa, importante e muito útil, que deve sempre ser considerada por webmasters e administrador de servidores web.

Configuração para seleção de múltiplos E-mails com Contact Form 7

28 janeiro, 2019

Após ler esse artigo todas as dúvidas foram sanadas. Excelente artigo!

https://premium.wpmudev.org/forums/topic/contact-form-to-send-to-different-options-contact-form7

 

Alguns plugins que utilizo

30 novembro, 2018

Irei resumir sobre alguns Plugins do WordPress que tenho utilizado com sucesso. Acredito que algumas pessoas podem utilizar alguns semelhantes.

WP Acessibility

Muito bom para tornar seu site WordPress com vários recursos de acessibilidade. Recomendo! Site do Plugin: https://wordpress.org/plugins/wp-accessibility/

Easy Social Icons

Disable Comments

Contact Form 7

Contact Form Mail PDF

AddToAny Share Buttons

Captcha by BestWebSoft

Contact Form DB

Desativar Comentários

Estatísticas da WP

Google Maps Widget

Imsanity

Manutenção Site

Master Slider

My WordPress Health Check

Postman SMTP

Regenerate Thumbnails

Send PDF for Contact Form 7

Smooth Page Scroll to Top

TinyMCE Advanced

User Role Editor

WP Acessibility

WP Bannerize

WPMU Theme Usage Info

3D FlipBook – Light Edition

Add From Server

Display Posts Shortcode

Easy FancyBox

Advanced Automatic Updates

Enable Multi-Site

Google Analytics by Yoast

Google Maps Widget

Hotfix

Instagram Feed

JSON Content Importer

Juicer

MailPoet Newsletters

Max Mega Menu

Modula

Upload Quota per User

 

Site lento em WordPress. O que fazer?

23 janeiro, 2018

Em alguma circunstância você pode deparar-se com isso. Seu site WordPress fica lento. O que pode ser? vamos avaliar algumas possibilidades e apresentar algumas soluções.

Antes de mais nada, temos em mente que nem todos os problemas apresentados vem diretamente do WordPress. Sendo os mais comuns:

  • Temas mal feitos (codificados)
  • Provedor de hospedagem lento
  • Desatualização do CMS e de Plugins
  • Quantidade de memória usada é incompatível ou mal uso da memória
  • Grande quantidade de plugins

Uma das primeiras atitudes a serem tomadas e verificar o que pode estar causando a lentidão. Eu uso o Pingdom para isso e recomendo tools.pingdom.com.

Aumente a quantidade de memória utilizada  pelo Servidor, caso necessário. Saiba mais neste Post. Inclua no seu arquivo config.php esta diretiva: define(‘WP_MEMORY_LIMIT’, ‘128M’); O valor de 128M é apenas uma sugestão.

Mantenha sempre atualizadas as versões do WordPress e Plugins instalados. Observe se os plugins ainda mantém compatibilidade com a versão instalada do CMS, caso contrário o plugin pode parar de funcionar e isso vai impactar de alguma forma no seu site.

Outro fator que não deve ser esquecido é se de fato o plugin que você utiliza não pode ser substituído por uma porção de código em seu tema. Que além de ser uma resposta mais enxuta, vai utilizar menos memória da aplicação. Não esqueça de desativar ou mesmo excluir os plugins em desuso.

Não esqueça de testar seu site na versão Mobile.

Caso todas essas dicas não tenham surtido efeito, talvez seja a hora de trocar de provedor! Aproveite e faça um plano com a Todayhost!

 

 

 

 

 

 

Merchandising: Torne-se um programador PHP Profissional

13 dezembro, 2017

Fica aqui a dica de uma empresa que está fazendo a diferença em treinamentos PHP nas modalidades Presencial e Online. Estamos falando da Code Experts Learning.

Os treinamentos abordam principalmente o universo PHP, começando pela Formação PHP inicial (e outros níveis), passando pelo Symphony, Ionic, Laravel, dentre outros.

Outra coisa muito importante, é que o Nanderson, principal instrutor da CEL, é Certificado ZEND, agregando profundo conhecimento com o PHP com uma metodologia de ensino diferenciada e uma didática simples e direta.

 

Acesse o site: https://codeexpertslearning.com.br

Canal no Youtube: https://www.youtube.com/CodeExpertsLearning

 

Como editar o arquivo Hosts no Windows

11 dezembro, 2017

Algumas vezes se faz necessário editar o arquivos HOSTS no Windows. Modificá-lo permite que você substitua o DNS de um domínio numa máquina específica. Isso é útil para diversas situações. Por exemplo, verificar se um site funciona, antes das alterações de DNS, e por outras razões relacionadas ao DNS. Ao acessar um site, o browser consultará este arquivo antes de consultar servidores de DNS externos.

Segurança

Hackers, auxiliados por malwares (vírus) instalados na máquina do usuário, podem comprometer a segurança apontando um endereço de um site verdadeiro pra um site falso, como uma rede social, um banco, etc. a partir da edição mal intencionada deste arquivo.

Usuários avançados (como técnicos, por exemplo) podem editar esse arquivo para evitar que usuários de determinada máquina acessem sites específicos utilizando o método acima, bastando para isso apontar para um IP fictício ou para o endereço do site da empresa, por exemplo.

Conteúdo inicial do arquivos HOSTS

Localizando e editando o arquivo HOSTS

  • Clique em no Botão Iniciar, em Todos os programas, em Acessórios, clique em Bloco de notas, botão direito e “Executar como administrador”;
  • Se estiver utilizando Windows 10, basta digitar a palavra “Bloco de notas” no campo de pesquisa e, quando aparecer o nome do programa, clicar sobre o mesmo com o botão direito e Executar como Administrador;
  • Abra o arquivo Hosts que está no caminho: “C:\WINDOWS\SYSTEM32\DRIVERS\ETC\”, realize as alterações necessárias e salve o arquivo. Se não executar o aplicativo em modo Administrador, não conseguirá salvar o arquivo.

 

Aumentando o limite de upload do Banco de Dados MySQL

7 dezembro, 2017

Em algumas circunstâncias, seja trabalhando em algum site ou sistema, ou mesmo para realizar upload de um arquivo de backup no PHPMYADMIN, pode existir a necessidade de aumentar o limite de upload de arquivos, que é limitado por algumas diretivas no Servidor.

Um dos primeiros passos a ser tomado é obter a configuração do seu PHP. Para isso crie um arquivo com o nome “info.php” e insira nele o seguinte código e salve-o em uma pasta na sua hospedagem:

<?php
    phpinfo();
?>

Ao executá-lo através de uma URL, como por exemplo, “www.seusite.com.br/phpinfo.php”, o resultado é uma página mostrando a configuração de várias diretrizes, como abaixo.

 

O arquivo de configuração

Após  obter a configuração do seu PHP, o passo a seguir será  localizar o arquivo “php.ini”.

No Windows:

Caso esteja utilizando o Xampp ou similar, navegue em sua pasta (geralmente localizada a partir da raiz C:), vá até a subpasta PHP.

No Linux:

/etc/php.ini
/etc/php/php.ini
/etc/php5/php.ini
/usr/bin/php5/bin/php.ini
/etc/php5/apache2/php.ini

ou faça uma busca com

find / -name php.ini

 

 

Aumentando o limite de upload do Banco de Dados (finalmente!)

E enfim, estas são as diretivas a serem alteradas:

upload_max_filesize: tamanho máximo para upload de arquivos.

post_max_size: tamanho máximo de dados postados. Essa configuração atua em conjunto com a diretiva acima e é necessário que o seu valor seja maior que o do “upload_max_filesize”. Geralmente eu utilizo o dobro do seu valor.

memory_limit: é a quantidade máxima de memória (em bytes) que um script aloca. Também atua em conjunto com as diretivas acima e seu valor sempre será maior do que “post_max_size”.

max_execution_time: tempo máximo de execução de cada script. Este item precisa de atenção, já que se o tempo for curto, haverá um erro, pois o servidor não conseguirá importar os dados no tempo limite.

Segue um exemplo de configuração de valores para cada diretiva, observando-se, é claro, que estes números dependem de cada situação.
upload_max_filesize = 128M
post_max_size = 256M
memory_limit = 512M
max_execution_time = 1024

Ressalvas

Em alguns casos, dependendo da sua hospedagem, você não terá acesso ao arquivo php.ini principal, então abra seu editor de código favorito e crie o arquivo “php.ini” na pasta raiz do seu projeto, geralmente em “public_html”.

Caso não faça nenhum efeito, verifique se foi reiniciado o servidor Apache, se houver essa opção em seu painel de controle da sua hospedagem. Caso negativo, entre em contato com o seu suporte técnico da sua hospedagem.

 

Lidando com arquivos .htaccess no WordPress

21 novembro, 2017

O .htaccess é um arquivo de configuração distribuída e é como Servidor Apache manipula as alterações de configuração em uma base por diretório.

O WordPress utiliza este arquivo para manipular como Apache manipula arquivos do seu diretório raiz e respectivas subpastas. Na maioria das vezes, WP modifica esse arquivo para que seja capaz de lidar melhor com permalinks (links permanentes).

Estas intruções podem ser úteis para configurar/restaurar um .htaccess corrompido (por exemplo, um plugin de comportamento inadequado).

Básico WP

# 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

Vários sites

A partir da versão 3.5

Se você ativou o Multisite no WordPress 3.5 ou posterior, use um destes.

Exemplo de subpasta

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]

Exemplo de subdomínio

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Versão 3.4 do WordPress e inferiores

Se você originalmente instalou o WordPress com Multisite 3,4 ou mais antigo, você precisa usar um destes:

Exemplo de subpasta

WordPress 3.0 através de 3.4.2

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

Exemplo de subdomínio

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
# END WordPress

WordPress MU

Se você começou a usar o WordPress com o WordPress MU (WPMU) e em seguida migrou para uma versão mais recente do WordPress em vários locais, as regras. htaccess são mais complexas:

Exemplo de subpasta

RewriteEngine On
RewriteBase /

# BEGIN WordPress
#uploaded files
RewriteRule ^(.*/)?files/$ index.php [L]
RewriteCond %{REQUEST_URI} !.*wp-content/plugins.*
RewriteRule ^(.*/)?files/(.*) wp-includes/ms-files.php?file=$2 [L]

# add a trailing slash to /wp-admin
RewriteCond %{REQUEST_URI} ^.*/wp-admin$
RewriteRule ^(.+)$ $1/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-.*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
# END WordPress

 

 

Texto retirado e traduzido do site: https://codex.wordpress.org/htaccess
Para saber mais informações, clique no link e obtenha outras configurações.

Para usuários mais experientes no assunto, recomendo este link: https://www.askapache.com/htaccess/

 

 

 

 

13 comandos úteis para gestão e migrações de sites WordPress

17 novembro, 2017

Usuários mais avançados, vez ou outra precisam gerenciar sites WordPress de forma mais complexa (como no caso de migrações, por exemplo), tendo que fazê-lo diretamente através do banco de dados.

Uma das ferramentas que pode ser utilizada para tanto é o PHPMYADMIN onipresente em praticamente todas as boas hospedagens de sites. Há que ser lembrado que o Backup deve ser realizado antes de qualquer coisa!

As dicas abaixo foram extraídas e traduzidas do artigo original 13 Useful WordPress SQL Queries You Wish You Knew Earlier

Os comandos SQL para WordPress a seguir são para o prefixo padrão do WordPress “wp_”. Caso o prefixo de suas tabelas seja diferente (o que é recomendado, por questões de segurança), faça os devidos complementos necessários às queries.

13 comandos necessários para migração do wordpress

Alterar siteurl e homeurl

WordPress armazena o caminho absoluto da URL do site (“siteurl”) e URL da home (“homeurl”) no banco de dados. Portanto, se você transferir o seu site WordPress do localhost para o servidor, por exemplo, o site não vai carregar! Isso ocorre porque o caminho absoluto ainda está apontando para o seu localhost. Você vai precisar executar um comando para resolver isso.

Alterar GUID

Depois de migrar seu blog a partir de, por exemplo, localhost, para o servidor ou de um outro domínio para um novo domínio, você terá que corrigir as URLs para o campo GUID na tabela wp_posts. Isto é crucial, porque GUID é usado para montar o slug de seu post do caminho absoluto do artigo correto.

Alterar URL no conteúdo

O WordPress utiliza caminhos absolutos no URL ao invés de um caminho relativo quando vai armazená-los no banco de dados. Dentro do conteúdo de cada registro de artigo, ele armazena todas as URLs antigas referenciando as fontes antigas. Portanto, você precisará alterar todas essas URLs com o endereço do novo domínio.

Alterar apenas o caminho das imagens

Caso seja preciso alterar o domínio das imagens inseridas nas páginas e artigos, esta solução vai ajudar você a fazer isso de forma simples.

Também é preciso atualizar o GUID para o tipo “attachment” com a seguinte instrução SQL:

Atualizar Post Meta

Atualizar Post Meta funciona quase da mesma maneira como atualizar a URL no conteúdo do post. Se você tiver dados extras para cada post, você pode usar a seguinte instrução para alterar todos eles.

Alterar o nome usuário padrão “admin”

Apesar de que na versão 3 do WordPress o usuário “admin” poderá ser alterado no momento da instalação, não custa deixar para a posteridade a dica de como alterar o nome do “admin”.

Resetar password

Já quis resetar sua senha no WordPress mas, por algum motivo, não conseguiu usar a seção para resetar o password? Eis a solução:

Transferir artigos de um autor para outro

Para transferir os artigos de um autor para outro, você gasta um tempo enorme se fizer isso manualmente. Com o comando SQL a seguir, é possível fazer isso facilmente. Para a dica, é preciso saber o ID dos autores.

UPDATE wp_posts
SET post_author = 'id_novo_autor'
WHERE post_author = 'id_autor_antigo';

Apagar revisões

Quando se está editando um artigo no WordPress, é comum cópias de segurança serem feitas para garantir o trabalho feito. São as chamadas “revisões”. Com o tempo, o número de registros de revisões fica grande e isso pode comprometer a performance do banco de dados. Para apagar todas as revisões de artigos, dê o seguinte comando SQL:

DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'

Lembrando que este é o comando para apagar revisões já feitas. Caro queira desativar o recurso (ou limitar o número de revisões), saiba como neste artigo sobre como limitar e desativar revisões de posts no WordPress.

Apagar post meta

Instalar e remover plugins é algo corriqueiro quando se trabalha com WordPress. Alguns plugins precisam de criar alguns post meta para funcionarem corretamente e, para esses casos, não é raro o acontecimento de, mesmo depois de o plugin ser desinstalado, algum “garbage meta” ficar enchendo o BD desnecessariamente. Uma limpeza em algum valor de post meta, às vezes, se faz necessária.

Exportar todos os e-mails de comentários

Quanto mais tempo seu blog/site fica no ar, é provável que mais comentários receba nos artigos publicados. Se, por algum motivo, for preciso uma listagem com e-mail de todas as pessoas que já comentaram até então, basta executar o seguinte comando:

Uma vez que a listagem esteja concluída, exporte tudo através do phpMyAdmin.

Apagar todos pingbacks

A medida que o site/blog fica no ar – e se você tiver bom conteúdo a oferecer – o número de pingbacks começa a influenciar a qualidade do banco de dados. Para apagar todos pingbacks, proceda da seguinte maneira:

Apagar todos comentários de SPAM

Sem maiores explicações, eis a maneira de deletar todos os comentários marcados como SPAM:

Identificar tags não usadas

Num banco de dados WordPress, se você executar alguma query SQL para apagar posts, as tags relacionadas não serão apagadas e continuarão aparecendo na nuvem de sugestão de tags e listagem de tags. Para identificar esse tipo de tag, execute a seguinte instrução SQL:

SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt
ON wt.term_id=wtt.term_id
WHERE wtt.taxonomy='post_tag'
AND wtt.count=0;
Artigo atualizado em 08/03/2022.