Tutorial básico do .htaccess

Servidor Apache

O que é o .htaccess?

apache web server - powered by apache SEO

O htaccess é um arquivo de configuração de acesso do servidor Apache. Com ele é possível configurar várias funções de acesso dos usuários a um diretório específico e atribuir estas regras aos subdiretórios subsequentes. Sendo a utilização de alguns parâmetros de configuração fortemente recomendado para SEO:

  • redirecionamento quando há mudança de url de uma postagem ou mesmo arquivo e imagem
  • redirecionamento quando há mudança ou migração de domínio
  • otimização de cache das páginas e arquivos de mídia (expire headers)

Mas lembre-se, é preciso verificar se está utilizando o servidor apache, para que possa utilizar o arquivo htaccess. Atualmente o nginx é o servidor de páginas mais eficiente, e sua utilização está ganhando mercado. Há também muitos provedores que utilizam também a solução de servidor de páginas da Microsoft, o IIS.

Para que serve o .htaccess?

Basicamente serve para configurar/definir diversas opções de um diretório e seus arquivos em um site web. É possível configurar vários parâmetros:

  • Acesso restrito: seja ele com senha, ou mesmo negar/permitir o acesso de qualquer maneira ao diretório
  • Páginas de erro padrão:
    • 400 Bad request,
    • 401 Auth Requested (Unauthorized),
    • 402 Payment Requested,
    • 403 Forbidden,
    • 404 Not Found,
    • 405 Method Not Allowed,
    • 406 Not Acceptable,
    • 407 Proxy Authentication Required,
    • 408 Request Timed Out,
    • 409 Conflicting Request,
    • 410 Gone,
    • 411 Content Len Requested,
    • 412 Precondition Failed,
    • 413 Entity Too Long,
    • 414 URI Too Long,
    • 500 Internal Server Error,
    • 501 Not Implemented,
    • 502 Bad Gateway,
    • 503 Service Unavailable (out of resources),
    • 504 Gateway Timeout,
    • 505 Http Version Not Suported.
  • Página padrão: Ex.: index.html
  • Configurar acesso com ou sem www: para evitar canonização de url
  • Redirecionar conteúdo: 301 Movido permanentemente, 302 Movido Temporariamente

Quando devo usar?

Devem ser utilizados em certos casos onde não há disponibilidade de acesso ao root ao sistema do servidor e assim os provedores de conteúdo necessitam fazer mudanças na configuração por diretório. Se não houver possibilidade do administrador do servidor efetuar mudanças sempre que necessário nas configurações do servidor, então fica viável a utilização dos arquivos .htaccess. Podemos citar como exemplo, quando os provedores de páginas web estão fornecendo vários sites para seus clientes em uma mesma máquina, e desejam que eles mesmos alterem as configurações desejadas.

Recomendamos que não se utilize o arquivo .htaccess caso você tenha acesso ao arquivo de configuração principal do servidor. É possível usar as configurações principais de autenticação de usuário no arquivo principal, sendo a maneira mais adequada. O uso correto do .htaccess provê grande auxílio no SEO do web site em questão.

Exemplo de arquivo .htaccess com as funções citadas:

Autenticação com senha em arquivo htpasswd

Para criar solicitação de senha em um diretório, basta criar um arquivo .htaccess neste diretório e inserir o conteúdo:

AuthType Basic
AuthName "Authorized Users Only"
AuthUserFile /home/senhas/.htpasswd
Require valid-user

Fique atento com a linha “AuthUserFile /home/senhas/htpasswd” este é o caminho onde o apache vai procurar pelos usuários e senhas que possuem permissão de acesso. Nesta linha eu digo que as senhas estão dentro da pasta /home/senhas/ e o arquivo com as senhas tem o nome de .htpasswd. Você pode alterar o caminho e o nome do arquivo por um de sua preferência.

Para criar o arquivo de usuário/senhas e adicionar o primeiro usuário, utilize o comando:

sudo htpasswd -c /home/senhas/.htpasswd nomeusuario

Repare que o comando acima possui o prefixo “-c”, este prefixo indica que o arquivo de senhas não existe, então é preciso criar o mesmo. Lembre-se que se o arquivo já existir, ele vai apagar o arquivo e criar outro.

Para adicionar do segundo usuário em diante, utilize o comando:

sudo htpasswd /home/senhas/.htpasswd usuario2

autenticação htaccess SEO - foto

Definir quais são as páginas para cada erro

As páginas de erro padrão do Apache são bem simples, apenas com um texto e breve descrição. Caso queira uma página estilizada em html ou php, você pode criá-la e informar ao apache qual página deve utilizar. Lembrando se fizer qualquer besteira no arquivo .htaccess é provável que receba um alerta de erro 500 no servidor.

ErrorDocument 400 erro400.html
ErrorDocument 401 erro401.html
ErrorDocument 504 erro504.html
ErrorDocument 505 erro505.html
ErrorDocument XXX erroXXX.html

Redirecionamento do domínio para https (SSL/TLS)

Finalmente instalou criptografia TLS (SSL) em seu website e agora precisa direcionar o tráfego? Você pode realizar este procedimento com um arquivo .htaccess no apache. Ou mesmo alterar diretamente dentro do arquivo de virtualhost (/etc/apache2/sites-available/website.conf)

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(viniciuspaes.com.br)(:80)? [NC]
RewriteRule ^(.*) https://viniciuspaes.com/$1 [R=301,L]

No comando acima avisamos que vamos utilizar o módulo mod_rewrite do apache, na segunda linha informamos para reescrever a condição de qualquer endereço do domínio oriundo da porta 80 (http) para a nova regra (terceira linha) onde ele agora deve utilizar certificado TLS/SSL (https) e que também redireciona acesso removendo o www. E fazemos esta mudança de forma permanente, utilizando o redirecionamento 301.

Página Padrão

A página padrão é o seguinte. Se você digita o endereço https://viniciuspaes.com/, o apache vai procurar a página padrão dentro do diretório do website. Por padrão o apache procura por página com nome index.html, index.htm, index.php, etc. Caso queira definir uma nova página padrão para aquele diretório, basta inserir o código abaixo no arquivo .htaccess dentro do diretório em questão.

DirectoryIndex novapaginapadrao.html 

Redirecionamento Permanente

<IfModule mod_rewrite.c>
RewriteRule ^url/antiga/conteudo/?$ https://viniciuspaes.com/url/nova/conteudo/ [R=301,L,NC]
RewriteRule ^url/antiga/conteudo-2/?$ https://viniciuspaes.com/url/nova/conteudo-2/ [R=301,L,NC]
RewriteRule ^url/antiga/conteudo-3/?$ https://viniciuspaes.com/url/nova/conteudo-3/ [R=301,L,NC]
</IfModule>

Redirecionamento Temporário

<IfModule mod_rewrite.c>
RewriteRule ^url/antiga/conteudo/?$ https://viniciuspaes.com/url/nova/conteudo/ [R=302,L,NC]
RewriteRule ^url/antiga/conteudo-2/?$ https://viniciuspaes.com/url/nova/conteudo-2/ [R=302,L,NC]
RewriteRule ^url/antiga/conteudo-3/?$ https://viniciuspaes.com/url/nova/conteudo-3/ [R=302,L,NC]
</IfModule>

Lembre-se que você pode utilizar todos os exemplos acima em um mesmo arquivo .htaccess. Tem alguma dúvida ou sugestão? Basta informar nos comentários!