
Problema
Todos nós sabemos que quando se quer acessar um diretório na raiz do servidor, basta colocar o domínio seguido do nome do tal diretório. Então, por exemplo, se o diretório chama-se “uploads”, você acessa ele pelo endereço http://taylorlopes.com/uploads.
O problema é que ao configurar o WordPress (ou qualquer outro sistema) com URL amigáveis, o que antes era uma página chamada contatos com uma URL http://taylorlopes.com/?page_id=2, passa a ser algo como http://taylorlopes.com/contatos. Note que essa nova forma de chamar a URL (dita amigável), assemelha-se a chamada de um diretório, sendo que contatos na verdade não é um diretório, mas apenas uma página.
Logo, a partir do momento que você decide usar URL amigáveis fica impossível chamar um diretório, pois o WordPress interpreta isso como sendo uma chamada a uma página, que obviamente não existe, e lança o erro “Ops! Essa página não pode ser encontrada“. Então, como fazer para chamar um diretório sem que o WordPress interprete essa chamada como sendo a uma página?
Solução
Para resolver esse problema e conseguir acessar diretamente um diretório na raiz do servidor sem que o WordPress interprete-o como uma página, abra o arquivo .htaccess e adicione a seguinte linha logo abaixo da primeira instrução RewriteRule, trocando “mydir” pelo nome do seu atual diretório:
Código parcial
RewriteCond %{REQUEST_URI} !^/(mydir|mydir/.*)$ |
Código completo
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_URI} !^/(mydir|mydir/.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress |
Observação:
O .htaccess fica na raiz do diretório onde o conteúdo Web é publicado, como por exemplo no diretório /www (wampserver) ou no /htdocs (xampp).
Redirecionamento
A ideia aqui é fazer com que um Post (página) responda por duas URL amigáveis, desta forma, quando alguém digitar http://taylorlopes.com/about (a página about não existe) seja feito um redirecionamento para http://taylorlopes.com/sobre (página sobre existe). Use o .htaccess para fazer o redirecionamento:
Código parcial
Redirect /about /sobre |
Código completo
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_URI} !^/(util|util/.*)$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d Redirect /about /sobre RewriteRule . /index.php [L] </IfModule> # END WordPress |
Fonte
WordPress: Exclude directory from URL rewrite with .htaccess