Base de Conhecimento Instruções simples para trabalhar com o serviço Profitserver
a Principal Base de Conhecimento Configurando o arquivo .htaccess

Configurando o arquivo .htaccess


Neste artigo, exploraremos os princípios fundamentais do uso do arquivo .htaccess, que é crucial para melhorar o SEO. Este arquivo garante a indexação adequada das páginas pelos mecanismos de busca. Aprenderemos como gerenciar redirecionamentos, configurar a segurança e aumentar o desempenho. Além disso, forneceremos dicas sobre como configurar este arquivo de forma independente.

Por que .htaccess é necessário

O arquivo .htaccess atua como um tipo de "controle remoto" para desenvolvedores web em servidores Apache. Ele oferece ferramentas convenientes para ajustar vários parâmetros e gerenciar o comportamento de um site. Quando o acesso direto aos principais arquivos de configuração do servidor não está disponível (como geralmente é o caso com hospedagem virtual, por exemplo), o .htaccess se torna uma ferramenta útil para fazer as alterações necessárias.

O Htaccess geralmente está localizado na pasta raiz do seu site ou nas pastas onde uma configuração especial é necessária. Por exemplo, se você usa o WordPress, a configuração pode ser feita por meio do plugin Yoast SEO, que discutimos no artigo sobre Configurando robots.txt. Em outros casos, basta ir até a pasta necessária e editar o arquivo .htaccess existente, ou criá-lo caso ele ainda não tenha sido criado.

Configurando o arquivo .htaccess

301 Redirecionamento htaccess

Um redirecionamento 301 no arquivo .htaccess pode ser comparado a um redirecionamento permanente em um site. Ele informa aos mecanismos de busca e navegadores que a página agora está permanentemente localizada em um novo endereço e sugere a atualização de favoritos e indexação. Esse redirecionamento é normalmente usado quando uma página é movida ou excluída para preservar sua classificação nos resultados de busca e redirecionar os visitantes para o novo local.

Para ativar redirecionamentos, você precisa habilitar o comando correspondente no arquivo .htaccess:

RewriteEngine on

Depois disso, você pode configurar a forma mais simples de redirecionamento:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect 301 /old-page.html /new-page.html
</IfModule>

Um redirecionamento semelhante usando o RedirecionamentoPermanente A diretiva se parece com isso:

<IfModule mod_rewrite.c>
RewriteEngine On
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
</IfModule>

Esses são os métodos de redirecionamento mais fáceis de configurar. Vamos considerar uma configuração que usa outros tipos de redirecionamentos mais avançados com o mod_rewrite módulo:

<IfModule mod_rewrite.c>
RewriteEngine On
    
# Redirecting from one page to another
RewriteRule ^old-page.html$ http://www.example.com/new-page.html [R=301,L]

# Redirecting all traffic from one domain to another
RewriteCond %{HTTP_HOST} ^oldsite.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.oldsite.com$
RewriteRule ^(.*)$ http://www.newsite.com/$1 [R=301,L]
    
# Redirecting from www to non-www (or vice versa)
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]

# Redirecting from HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# Redirecting from one subdomain to another
RewriteCond %{HTTP_HOST} ^subdomain1.example.com$
RewriteRule ^(.*)$ http://subdomain2.example.com/$1 [R=301,L]
</IfModule>

Um redirecionamento 302 .htaccess, indicando realocação temporária, é encontrado com muito menos frequência. Aqui está um exemplo de tal configuração:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^old-page.html$ /new-page.html [R=302,L]
</IfModule>

Diretiva ErrorDocument

Esta configuração permite que você controle o que o usuário vê quando ocorrem erros HTTP no seu site. Em vez da mensagem de erro padrão, você pode mostrar sua própria página, que será mais informativa para o visitante e o ajudará a entender o que aconteceu. Basta seguir esta sintaxe para uso:

ErrorDocument <error_code> <URL_page>

Por exemplo, nos

ErrorDocument 404 /errors/not_found.html

Significa que quando um 404 ocorre um erro, a página em /erros/não_encontrado.html será aberto. URLs absolutas são especificadas de forma semelhante:

ErrorDocument 500 http://example.com/errors/server_error.html

Este exemplo indica a exibição do erro_do_servidor.html página em http://example.com/errors/ no caso de um 500 erro.

Negando acesso a um diretório de site

O arquivo .htaccess tem o comando Negar a partir de todos, que ajuda a negar acesso a certas pastas ou arquivos no seu servidor web. Isso pode ser útil se você quiser ocultar informações privadas ou arquivos importantes dos visitantes do site para garantir a segurança dos dados.

Para desabilitar a listagem (visualização de todos os diretórios disponíveis), você precisa adicionar a linha:

Options -Indexes

Um exemplo de bloqueio de acesso a um diretório específico se parece com isto:

<Directory /path_to_your_directory>
Order Deny,Allow
Deny from all
</Directory>

Da mesma forma, você pode negar acesso a um único arquivo:

<Files "file.php">
Order Deny,Allow
Deny from all
</Files>

Ou para uma variedade de arquivos por extensão:

<FilesMatch "\.(txt|log|bak)$"> # Select the desired extensions, in the example: txt, log, bak
Order Deny,Allow
Deny from all
</FilesMatch>

Bloqueio de acesso por IP

Bloquear o acesso por IP no arquivo .htaccess é um método que permite restringir o acesso ao seu site para endereços IP específicos ou seus grupos. Isso pode ser útil se você quiser impedir o acesso ao seu site ou suas partes específicas para certas pessoas ou bots indesejados.

O bloqueio de um único endereço IP é feito com o comando:

Order Deny,Allow
Allow from all
Deny from 11.22.33.44

O bloqueio de vários endereços IP é feito de forma semelhante, duplicando o "Negar a partir" linha com os endereços necessários.

Para bloquear um intervalo de endereços IP:

Order Deny,Allow
Allow from all
Deny from 11.11.11.11/24

Para permitir acesso apenas para IPs específicos, adicione o código:

Order Deny,Allow
Deny from all
Allow from 11.22.33.44

Para uma negação completa de acesso, use a diretiva Negar a partir de todos, e para bloquear endereços por máscara, especifique Negar a partir 11.22.

Onde, 11.22 é o endereço IP máscara.

Bloqueando visitantes por User-Agent

Bloquear usuários por User-Agent no arquivo .htaccess é um método de controlar quem pode acessar seu servidor web com base em informações sobre o navegador que o visitante usa. A string User-Agent contém dados sobre o navegador que uma pessoa usa para interagir com seu servidor e, graças a essas informações, você pode restringir o acesso para certos usuários.

A maneira mais comum de bloquear por User-Agent é usar mod_rewrite:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^Bot1 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot2 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot3 [NC]
RewriteRule ^.*$ - [F,L]
</IfModule>

Neste exemplo:

  1. RewriteCond %{HTTP_USER_AGENT} é usado para verificar a string User-Agent.
  2. ^Bot1, ^Bot2, ^Bot3 são exemplos de strings User-Agent que queremos bloquear. Os modificadores NC indicam que a comparação deve ser insensível a maiúsculas e minúsculas.
  3. RewriteRule ^.*$ - [F,L] aplica-se à solicitação se qualquer uma das condições RewriteCond for atendida. Ele envia uma resposta com o código de status 403 Forbidden (F) e interrompe o processamento de regras (L).

Cache em htaccess

Configurar o cache por meio do arquivo .htaccess ajuda a acelerar seu site, tornando-o mais rápido para os usuários. Funciona assim: certos arquivos, como imagens, estilos CSS e scripts JavaScript, são armazenados no cache do navegador do usuário após o primeiro carregamento. Agora, o navegador pode usar esses arquivos do cache, em vez de recarregá-los do servidor toda vez que o usuário visita uma página. Isso reduz o tempo de carregamento e melhora o desempenho do site.

Considere um exemplo:

# Enable caching for images for 1 month
<FilesMatch "\.(jpg|jpeg|png|gif|svg)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>

# Enable caching for CSS and JavaScript for 1 week
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>

Por outro lado, para recursos que são atualizados com frequência, é necessário desabilitar o cache:

# Excluding caching for HTML pages and XML files
<FilesMatch "\.(html|xml)$">
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "0"
</FilesMatch>

Otimizando o desempenho do site

O processo de mod_deflate e mod_gzip módulos no Apache ajudam a compactar informações que o servidor envia para os dispositivos dos usuários. Isso torna os arquivos menores em tamanho, o que por sua vez acelera o carregamento da página. No entanto, é importante lembrar que o suporte e a configuração desses módulos podem variar dependendo do seu servidor.

Exemplo de uso do mod_deflate módulo:

<IfModule mod_deflate.c>
# Compressing text file types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Exemplo para mod_gzip:

<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_item_include file .(html?|txt|css|js|php|pl)$ # Enabling compression for files with extensions .html, .txt, .css, .js, .php, .pl
mod_gzip_item_include mime ^application/x-javascript.* # Enabling compression for MIME types starting with application/x-javascript
mod_gzip_item_include mime ^text/.* # Enabling compression for MIME types starting with text/
mod_gzip_item_exclude mime ^image/.* # Excluding from compression MIME types starting with image/
mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* # Excluding already compressed data (responses with the Content-Encoding: gzip header)
</IfModule>

Discutimos as diretivas mais comumente usadas. Você pode se familiarizar com todos os recursos do arquivo no documentação oficial.

Como verificar a funcionalidade do arquivo .htaccess

Para verificar se seu arquivo .htaccess está funcionando no site, você pode executar as seguintes etapas:

  1. Alterar intencionalmente o arquivo .htaccess com um erro. Em resposta, o servidor deve dar um erro. Este método mostra se a operação do arquivo é geralmente aplicada no servidor.
  2. Verifique a funcionalidade de alterações específicas que você fez. Por exemplo, faça um pequeno ajuste em um dos parâmetros e avalie a presença de alterações.
  3. Verifique o código de status da página se as alterações estão relacionadas à resposta do servidor. Como fazer isso, descrevemos anteriormente no artigo Códigos de erro HTTP: uma lista completa de erros do servidor.
  4. Consulte os logs do servidor. Eles exibem todos os erros relacionados à operação do arquivo .htaccess.
  5. Realize testes usando serviços ou ferramentas online.

É importante entender que para verificar a funcionalidade do arquivo .htaccess, você não precisa executar todos os passos de uma vez. Basta escolher o método mais adequado da lista e usá-lo.

Conclusão

Configurar o arquivo .htaccess é uma etapa importante na otimização e proteção do seu servidor Apache. Exploramos como esse arquivo ajuda a gerenciar redirecionamentos, compactar conteúdo e garantir a segurança. Depois que você dominar o trabalho com .htaccess, você ganha uma ferramenta poderosa para melhorar o desempenho e a funcionalidade dos sites.

❮ Artigo anterior Configuração do servidor FTP
Próximo artigo ❯ Como configurar um servidor web (Apache-PHP-MySQL/MariaDB) no Linux

Pergunte-nos sobre VPS

Estamos sempre prontos para responder suas perguntas a qualquer hora do dia ou da noite.