Redirecionamento com .htaccess


O que é um arquivo Htaccess?
O arquivo .htaccess, ou Hypertext Access, é um arquivo de texto de configuração que controla o diretório, bem como quaisquer subdiretórios, onde ele está localizado em um servidor web Apache. Se você usa um plano de hospedagem na Web baseado em Linux, suas propriedades da Web provavelmente serão executadas no Apache. Você pode ter visto o arquivo .htaccess em certos diretórios, especialmente se você tiver implantado o WordPress, Joomla, Drupal ou qualquer outro software web de gerenciamento de conteúdo.

O arquivo .htaccess pode incluir instruções específicas para o servidor. Esse arquivo pode configurar o servidor para exigir uma senha para o diretório em que ele reside. O arquivo .htaccess também pode ser configurado para redirecionar automaticamente os usuários para outro arquivo ou site de índice, restringir ou permitir usuários com base em endereços IP e desativar as listagens de diretório. Talvez você nunca precise editar o arquivo .htaccess, mas, se fizer isso, deverá certificar-se de que o arquivo tenha o nome “.htaccess” apenas, com o período à frente e sem extensão de arquivo .txt ou .htm.

Regras de Htaccess de redirecionamento 301 comuns
Como você redireciona uma única página?
Redirect 301 /pagename.php http://www.domain.com/pagename.html

Como você redireciona um site ou domínio inteiro para um novo?
Redirect 301 / http://www.domain.com/

Como você redireciona um site inteiro para uma subpasta?
Redirect 301 / http://www.domain.com/subfolder/

Como você redireciona uma subpasta para um site diferente?
Redirect 301 /subfolder http://www.domain.com/

Como você redireciona uma extensão de arquivo, mas retém o nome da página?
Exemplo: Se você quiser que uma extensão .html use o mesmo nome de arquivo, mas use a extensão .php.

RedirectMatch 301 (.*).html$ http://www.domain.com$1.php

Como você usa a reescrita para redirecionar do domínio antigo para o novo domínio?
RewriteEngine on
RewriteBase /
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Como você usa a reescrita para redirecionar de um subdomínio não www para www?
RewriteEngine on
RewriteBase /
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

Como você usa a reescrita para redirecionar um domínio para o local www com o subdiretório?
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} domain.com [NC]
RewriteRule ^(.*)$ http://www.domain.com/directory/index.html [R=301,NC]

Como você usa a reescrita para redirecionar de um domínio antigo para um novo domínio que inclua o caminho completo e a string de consulta?
Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*) http://www.newdomain.com%{REQUEST_URI} [R=302,NC]

Como você usa a reescrita para redirecionar de um domínio antigo com um subdiretório para um novo domínio sem o subdiretório, mas incluir o caminho completo e a string de consulta?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/subdirname/(.*)$
RewriteRule ^(.*) http://www.katcode.com/%1 [R=302,NC]

Como você reescreve e redireciona URLs com parâmetros de consulta com arquivos colocados em um diretório raiz?
Exemplo: o URL original sendo http://www.website.com/index.php?id=3 e o novo URL http://www.website.com/path-to-new-location/

RewriteEngine on
RewriteCond %{QUERY_STRING} id=3
RewriteRule ^index.php$ /path-to-new-location/? [L,R=301]

Como você redireciona URLs com parâmetros de consulta e coloca arquivos em um subdiretório?
Exemplo: o URL original sendo http://www.website.com/sub-dir/index.php?id=3 e a nova página http://www.website.com/path-to-new-location/

RewriteEngine on
RewriteCond %{QUERY_STRING} id=3
RewriteRule ^sub-dir/index.php$ /path-to-new-location/? [L,R=301]

Como você redireciona um site para HTTPS do HTTP para eliminar o conteúdo duplicado?
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

Como você redireciona um site de HTTP para HTTPS para eliminar o conteúdo duplicado?
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

Como você remove um index.html ou index.php e redireciona para a raiz?
RewriteEngine On
RewriteCond %{THE_REQUEST} /index.php HTTP [NC]
RewriteRule (.*)index.php$ /$1 [R=301,L]
RewriteEngine On
RewriteCond %{THE_REQUEST} /index.html HTTP [NC]
RewriteRule (.*)index.html$ /$1 [R=301,L]

Como você reescreve e redireciona URLs com o parâmetro de consulta para a estrutura baseada em diretório, retendo a string de consulta no nível raiz da URL?
Exemplo: o URL original sendo http://www.website.com/index.php?id=100 e a nova página http://www.website.com/100/

RewriteEngine On
RewriteRule ^([^/d]+)/?$ index.php?id=$1 [QSA]

Como você reescreve URLs com um parâmetro de consulta para uma estrutura baseada em diretório, retendo o parâmetro de string de consulta no subdiretório URL?
Exemplo: o URL original é http://www.website.com/index.php?category=fish e a nova página http://www.website.com/category/fish/

RewriteEngine On
RewriteRule ^/?category/([^/d]+)/?$ index.php?category=$1 [L,QSA]

Como você redireciona um site antigo para um novo domínio e retém o caminho do URL?
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example-old.com$ [NC]
RewriteRule ^(.*)$ http://www.example-new.com/$1 [R=301,L]

Se você não quiser passar o caminho para o novo domínio, altere a última linha para:
RewriteRule ^(.*)$ http://www.example-new.com/ [R=301,L]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.