diff --git a/README.md b/README.md index 99e1d94..7dad88a 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,19 @@ # .htaccess Snippets [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) + +[Français](https://github.com/phanan/htaccess/tree/master/Translations/French) + •  +[Deutsche](https://github.com/phanan/htaccess/tree/master/Translations/German) + •  +[Italiano](https://github.com/phanan/htaccess/tree/master/Translations/Italian) + •  +[日本人](https://github.com/phanan/htaccess/tree/master/Translations/Japanese) + •  +[Português Brasileiro](https://github.com/phanan/htaccess/tree/master/Translations/Portuguese-BR) + •  +[Pусский](https://github.com/phanan/htaccess/tree/master/Translations/Russian) + •  +[Cлова:](https://github.com/phanan/htaccess/tree/master/Translations/Slovak) + A collection of useful .htaccess snippets, all in one place. **NOTE**: `.htaccess` files are for people that do not have rights to edit the main server configuration file. They are intrinsically slower and more complicated than using the main config. Please see the [howto in the httpd documentation](https://httpd.apache.org/docs/current/howto/htaccess.html) for further details. diff --git a/Translations/Portuguese-BR/README.md b/Translations/Portuguese-BR/README.md index 996e3b0..77043df 100644 --- a/Translations/Portuguese-BR/README.md +++ b/Translations/Portuguese-BR/README.md @@ -1,321 +1,1194 @@ -# .htaccess Snippets -Uma coleção de snippets .htaccess úteis, tudo em um só lugar. - -**Disclaimer**: ao deixar cair o trecho em um arquivo `.htaccess` é a maior parte do tempo suficiente, há casos em que algumas modificações podem ser necessárias. Use por sua conta e risco. - -**IMPORTANTE**: Apache 2.4 introduz algumas alterações significativas, principalmente na configuração de controle de acesso. Para mais informações, consulte o [upgrading document](https://httpd.apache.org/docs/2.4/upgrading.html) bem como [this issue](https://github.com/phanan/htaccess/issues/2). +# Trechos de Códigos .htaccess   [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) + +[Français](https://github.com/phanan/htaccess/tree/master/Translations/French) + •  +[Deutsche](https://github.com/phanan/htaccess/tree/master/Translations/German) + •  +[Italiano](https://github.com/phanan/htaccess/tree/master/Translations/Italian) + •  +[日本人](https://github.com/phanan/htaccess/tree/master/Translations/Japanese) + •  +[Português Brasileiro](https://github.com/phanan/htaccess/tree/master/Translations/Portuguese-BR) + •  +[Pусский](https://github.com/phanan/htaccess/tree/master/Translations/Russian) + •  +[Cлова:](https://github.com/phanan/htaccess/tree/master/Translations/Slovak) + +Uma coleção de trechos de códigos úteis para arquivos `.htaccess`, todos em um só lugar. + +**Nota:** Os arquivos `.htaccess` são úteis para as pessoas que não possuem direitos ou a permissão adequada +para editar o arquivo principal de configuração do servidor. Esses arquivos são intrinsecamente mais lentos e +complicados do que o arquivo principal de configuração. Consulte a [documentação oficial do Apache](#) para +obter mais detalhes. + +**Importante:** O `Apache 2.4` apresenta algumas mudanças importantes, principalmente na configuração de +controle de acesso. Para obter mais informações, acesse o [documento de atualização](#) e esta [issue](#). + +**Isenção de responsabilidade:** Embora copiar e colar trechos de códigos em um arquivo `.htaccess` seja na +maioria das vezes o suficiente, há casos em que certas modificações sejam necessárias. Use por sua conta e +risco. ## Créditos -O que estamos fazendo aqui é principalmente a coleta trechos úteis de todo o interwebs (por exemplo, uma boa parte é de -[Apache Server Configs](https://github.com/h5bp/server-configs-apache)) em um só lugar. Enquanto estamos tentando dar crédito onde, devido, as coisas podem estar em falta. Se você acreditar em qualquer coisa que está aqui deve ser dado o seu trabalho e créditos, avise-nos, ou apenas enviar uma PR. - -## Tabela de Conteúdo -- [Rewrite and Redirection](#rewrite-and-redirection) - - [Force www](#force-www) - - [Force www in a Generic Way](#force-www-in-a-generic-way) - - [Force non-www](#force-non-www) - - [Force non-www in a Generic Way](#force-non-www-in-a-generic-way) - - [Force HTTPS](#force-https) - - [Force HTTPS Behind a Proxy](#force-https-behind-a-proxy) - - [Force Trailing Slash](#force-trailing-slash) - - [Remove Trailing Slash](#remove-trailing-slash) - - [Redirect a Single Page](#redirect-a-single-page) - - [Alias a Single Directory](#alias-a-single-directory) - - [Alias Paths to Script](#alias-paths-to-script) - - [Redirect an Entire Site](#redirect-an-entire-site) - - [Alias "Clean" URLs](#alias-clean-urls) -- [Security](#security) - - [Deny All Access](#deny-all-access) - - [Deny All Access Except Yours](#deny-all-access-except-yours) - - [Allow All Access Except Spammers'](#allow-all-access-except-spammers) - - [Deny Access to Hidden Files and Directories](#deny-access-to-hidden-files-and-directories) - - [Deny Access to Backup and Source Files](#deny-access-to-backup-and-source-files) - - [Disable Directory Browsing](#disable-directory-browsing) - - [Disable Image Hotlinking](#disable-image-hotlinking) - - [Disable Image Hotlinking for Specific Domains](#disable-image-hotlinking-for-specific-domains) - - [Password Protect a Directory](#password-protect-a-directory) - - [Password Protect a File or Several Files](#password-protect-a-file-or-several-files) - - [Block Visitors by Referrer](#block-visitors-by-referrer) - - [Prevent Framing the Site](#prevent-framing-the-site) -- [Performance](#performance) - - [Compress Text Files](#compress-text-files) - - [Set Expires Headers](#set-expires-headers) - - [Turn eTags Off](#turn-etags-off) -- [Miscellaneous](#miscellaneous) - - [Set PHP Variables](#set-php-variables) - - [Custom Error Pages](#custom-error-pages) - - [Force Downloading](#force-downloading) - - [Prevent Downloading](#prevent-downloading) - - [Allow Cross-Domain Fonts](#allow-cross-domain-fonts) - - [Auto UTF-8 Encode](#auto-utf-8-encode) - - [Switch to Another PHP Version](#switch-to-another-php-version) - - [Disable Internet Explorer Compatibility View](#disable-internet-explorer-compatibility-view) - - [Serve WebP Images](#serve-webp-images) - -## Rewrite and Redirection -Nota: Presume-se que você tem `mod_rewrite` instalado e habilitado. - -### Force www -``` apacheconf +O que fazemos aqui é percorrer a internet atrás de trechos de códigos úteis e reunir todos em um só lugar. +Embora tentamos dar o devido crédito, pode ser que alguns trechos de códigos não tenham o devido crédito, além +disso estamos falando da `internet`. Se você acredita que algum desses trechos de códigos seja de sua autoria +e deseja ter o devido crédito, nos envie uma [pull request](#). + +## Índice + +- [Reescrever e redirecionar](#reescrever-e-redirecionar) + + - [Forçar `www` na url](#forçar-www-na-url) + - [Forçar `www` na url de maneira genérica](#forçar-www-na-url-de-maneira-genérica) + - [Forçar a remoção do `www` da url](#forçar-a-remoção-do-www-da-url) + - [Forçar a remoção do `www` da url de maneira genérica](#forçar-a-remoção-do-www-da-url-de-maneira-genérica) + - [Forçar o uso de `HTTPS`](#forçar-o-uso-de-https) + - [Forçar o uso de `HTTPS` por trás de um `proxy`](#forçar-o-uso-de-https-por-trás-de-um-proxy) + - [Forçar `\` no final da url](#forçar--no-final-da-url) + - [Remover `\` no final da url](#remover--no-final-da-url) + - [Redirecionar uma única página](#redirecionar-uma-única-página) + - [Redirecionar utilizando a directiva `RedirectMatch`](#redirecionar-utilizando-a-directiva-redirectmatch) + - [Alias para redirecionar de um diretório para outro com a directiva `RewriteRule`](#alias-para-redirecionar-de-um-diretório-para-outro-com-a-directiva-rewriterule) + - [Alias para redirecionar todas as solicitações de um diretório para um único arquivo](#alias-para-redirecionar-todas-as-solicitações-de-um-diretório-para-um-único-arquivo) + - [Redirecionar um site inteiro](#redirecionar-um-site-inteiro) + - [Limpar a `url` de extensões `PHP`](#limpar-a-url-de-extensões-php) + - [Excluir uma `url` de um redirecionamento](#excluir-uma-url-de-um-redirecionamento) + +- [Segurança](#segurança) + + - [Negar acesso total](#negar-acesso-total) + - [Negar acesso total, exceto o seu `ip`](#negar-acesso-total-exceto-o-seu-ip) + - [Permitir acesso total, exceto `spammers`](#permitir-acesso-total-exceto-spammers) + - [Negar acesso a arquivos e diretórios ocultos](#negar-acesso-a-arquivos-e-diretórios-ocultos) + - [Negar acesso a arquivos de backup e de origem](#negar-acesso-a-arquivos-de-backup-e-de-origem) + - [Desativar a navegação de um diretório](#desativar-a-navegação-de-um-diretório) + - [Desativar links de imagens](#desativar-links-de-imagens) + - [Desativar links de imagens de domínios específicos](#desativar-links-de-imagens-de-domínios-específicos) + - [Proteger um diretório com senha](#proteger-um-diretório-com-senha) + - [Proteger um ou vários arquivos com senha](#proteger-um-ou-vários-arquivos-com-senha) + - [Bloquear visitantes de sites referenciadores específicos](#bloquear-visitantes-de-sites-referenciadores-específicos) + - [Impedir o enquadramento de um site](#impedir-o-enquadramento-de-um-site) + +- [Desempenho](#desempenho) + + - [Compactar arquivos de texto](#compactar-arquivos-de-texto) + - [Definir cabeçalhos de expiração](#definir-cabeçalhos-de-expiração) + - [Desligar o `HTTP ETag`: Mecanismo de validação condicional de cache](#desligar-o-http-etag-mecanismo-de-validação-condicional-de-cache) + +- [Diversos](#diversos) + + - [Definir variáveis `PHP`](#definir-variáveis-php) + - [Páginas de erro personalizadas](#páginas-de-erro-personalizadas) + - [Forçar `download` de arquivos](#forçar-download-de-arquivos) + - [Impedir `download` para visualização de arquivos](#impedir-download-para-visualização-de-arquivos) + - [Permitir `webfonts` de todos os domínios](#permitir-webfonts-de-todos-os-domínios) + - [Definir o tipo de codificação automaticamente em arquivos específicos](#definir-o-tipo-de-codificação-automaticamente-em-arquivos-específicos) + - [Mudar a versão do `PHP` para uma aplicação ou tarefa específica](#mudar-a-versão-do-php-para-uma-aplicação-ou-tarefa-específica) + - [Desativar o modo de exibição de compatibilidade do Internet Explorer](#desativar-o-modo-de-exibição-de-compatibilidade-do-internet-explorer) + - [Permitir a exibição/veiculação de imagens `.webp`](#permitir-a-exibiçãoveiculação-de-imagens-webp) + +## Reescrever e redirecionar + +**Nota:** Presume-se que você tenha os módulos de reescrita `mod_rewrite` e alias `mod_alias` instalados e +ativos no seu servidor. + +### Forçar `www` na url + +**Fonte:** [Stack Overflow](https://stackoverflow.com/q/4916222) + +Esse trecho de código funciona em qualquer domínio. + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on + +# Condição necessária para reescrita RewriteCond %{HTTP_HOST} ^example\.com [NC] -RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC] + +# Regra para reescrita da url +RewriteRule ^(.*)$ http://www.example.com/$1 [L, R=301, NC] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condição necessária para reescrita + RewriteCond %{HTTP_HOST} ^example\.com [NC] + + # Regra para reescrita da url + RewriteRule ^(.*)$ http://www.example.com/$1 [L, R=301, NC] + ``` -### Force www in a Generic Way -``` apacheconf +[Próximo código](#forçar-www-na-url-de-maneira-genérica)  •  [Voltar ao índice](#índice) + +--- + +### Forçar `www` na url de maneira genérica + +**Fonte:** [Stack Overflow](https://stackoverflow.com/a/4958847) + +Esse trecho de código funciona em qualquer domínio. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condições necessárias para reescrita RewriteCond %{HTTP_HOST} !^$ RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTPS}s ^on(s)| -RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] + +# Regra para reescrita da url +RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301, L] ``` -Isso funciona para _any_ domain. [Source](https://stackoverflow.com/questions/4916222/htaccess-how-to-force-www-in-a-generic-way) -### Force non-www -It's [still](http://www.sitepoint.com/domain-www-or-no-www/) [open](https://devcenter.heroku.com/articles/apex-domains) [for](http://yes-www.org/) [debate](http://no-www.org/) se www ou non-www é o caminho a percorrer, por isso, se acontecer de você ser um fã de domínios descalços, aqui você vai: -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{HTTP_HOST} !^$ + RewriteCond %{HTTP_HOST} !^www\. [NC] + RewriteCond %{HTTPS}s ^on(s)| + + # Regra para reescrita da url + RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301, L] + +``` + +[Próximo código](#forçar-a-remoção-do-www-da-url)  •  [Voltar ao índice](#índice) + +--- + +### Forçar a remoção do `www` da url + +**Fonte:** Desconhecida + +Esse assunto ainda está aberto para [debates](https://www.sitepoint.com/domain-www-or-no-www/), se o melhor +caminho é utilizar o [`www`](http://yes-www.org) ou remover o [`www`](http://no-www.org/) da `url`. Caso você +tenha uma preferência em domínios... como podemos dizer... `descalços` ou `desfragmentados`, esse trecho de +código é pra você. + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on + +# Condição necessária para reescrita RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] -RewriteRule ^(.*)$ http://example.com/$1 [L,R=301] + +# Regra para reescrita da url +RewriteRule ^(.*)$ http://example.com/$1 [L, R=301] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condição necessária para reescrita + RewriteCond %{HTTP_HOST} ^www\.example\.com [NC] + + # Regra para reescrita da url + RewriteRule ^(.*)$ http://example.com/$1 [L, R=301] + ``` -### Force non-www in a Generic Way -``` apacheconf +[Próximo código](#forçar-a-remoção-do-www-da-url-de-maneira-genérica)  •  [Voltar ao índice](#índice) + +--- + +### Forçar a remoção do `www` da url de maneira genérica + +**Fonte:** Desconhecida + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on + +# Condições necessárias para reescrita RewriteCond %{HTTP_HOST} ^www\. RewriteCond %{HTTPS}s ^on(s)|off RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$ -RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L] + +# Regra para reescrita da url +RewriteRule ^ %1%3%{REQUEST_URI} [R=301, L] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{HTTP_HOST} ^www\. + RewriteCond %{HTTPS}s ^on(s)|off + RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$ + + # Regra para reescrita da url + RewriteRule ^ %1%3%{REQUEST_URI} [R=301, L] + ``` -### Force HTTPS -``` apacheconf +[Próximo código](#forçar-o-uso-de-https)  •  [Voltar ao índice](#índice) + +--- + +### Forçar o uso de `HTTPS` + +**Fonte:** Desconhecida + +**Importante:** É recomendado habilitar o `HTTP Strict Transport Security (HSTS)` em seu site juntamente com +`HTTPS` para ajudar a previnir ataques `man in the middle`. Consulte [Developer Mozilla](https://mzl.la/2QlMgAg) +para mais informações. + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on + +# Condição necessária para reescrita RewriteCond %{HTTPS} !on + +# Regra para reescrita da url RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} -# Nota: Também é recomendável habilitar HTTP Strict Transport Segurança (HSTS) -# Em seu site HTTPS para ajudar a prevenir ataques man-in-the-middle. -# Veja https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security +# Habilita o HTTP Strict Transport Security (HSTS) +# Remova 'includeSubDomains' se não quiser aplicar HSTS em todos os subdomínios +Header always set Strict-Transport-Security "max-age=31536000;includeSubDomains" +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condição necessária para reescrita + RewriteCond %{HTTPS} !on + + # Regra para reescrita da url + RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} + + +# Verifica se o módulo está instalado - Header sempre definido Strict-Transport-Security "max-age=31536000; includeSubDomains" + + # Habilita o HTTP Strict Transport Security (HSTS) + # Remova 'includeSubDomains' se não quiser aplicar HSTS em todos os subdomínios + Header always set Strict-Transport-Security "max-age=31536000;includeSubDomains" ``` -### Force HTTPS Behind a Proxy -Útil se você tiver um proxy na frente do seu servidor a realização de terminação TLS. -``` apacheconf +[Próximo código](#forçar-o-uso-de-https-por-trás-de-um-proxy)  •  [Voltar ao índice](#índice) + +--- + +### Forçar o uso de `HTTPS` por trás de um `proxy` + +**Fonte:** Desconhecida + +**Importante:** Esse código é útil se você estiver utilizando um proxy que esteja executando uma terminação +`TLS`. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condição necessária para reescrita RewriteCond %{HTTP:X-Forwarded-Proto} !https + +# Regra para reescrita da url RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} ``` -### Force Trailing Slash -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condição necessária para reescrita + RewriteCond %{HTTP:X-Forwarded-Proto} !https + + # Regra para reescrita da url + RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} + +``` + +[Próximo código](#forçar--no-final-da-url)  •  [Voltar ao índice](#índice) + +--- + +### Forçar `\` no final da url + +**Fonte:** Desconhecida + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condição necessária para reescrita RewriteCond %{REQUEST_URI} /+[^\.]+$ -RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] + +# Regra para reescrita da url +RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301, L] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condição necessária para reescrita + RewriteCond %{REQUEST_URI} /+[^\.]+$ + + # Regra para reescrita da url + RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301, L] + ``` -### Remove Trailing Slash -``` apacheconf +[Próximo código](#remover--no-final-da-url)  •  [Voltar ao índice](#índice) + +--- + +### Remover `\` no final da url + +**Fonte:** [Stack Overflow](https://stackoverflow.com/a/27264788) + +**Importante:** Esse código redireciona dos caminhos que terminam com `\` para as suas contrapartes sem `\` +(exceto para diretórios reais), por exemplo, de `http://example.com/blog/` para `http://example.com/blog`. +Isso é importante para [`SEO`](https://bit.ly/2EvlDWW), pois é recomendável ter uma +[`url` canônica](https://bit.ly/34KjSQX) em cada página. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condições necessárias para reescrita RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule ^(.*)/$ /$1 [R=301,L] +RewriteCond %{REQUEST_URI} (.+)/$ + +# Regra para reescrita da url +RewriteRule ^ %1 [R=301, L] ``` -### Redirect a Single Page -``` apacheconf + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + + # Regra para reescrita da url + RewriteRule ^ %1 [R=301, L] + +``` + +[Próximo código](#redirecionar-uma-única-página)  •  [Voltar ao índice](#índice) + +--- + +### Redirecionar uma única página + +**Fonte:** [CSS Tricks](https://bit.ly/31ssjOF) + +```apacheconf +# Condições necessárias para redirecionar Redirect 301 /oldpage.html http://www.example.com/newpage.html Redirect 301 /oldpage2.html http://www.example.com/folder/ ``` -[Source](http://css-tricks.com/snippets/htaccess/301-redirects/) -### Alias a Single Directory -``` apacheconf -RewriteEngine On -RewriteRule ^source-directory/(.*) target-directory/$1 +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Condições necessárias para redirecionar + Redirect 301 /oldpage.html http://www.example.com/newpage.html + Redirect 301 /oldpage2.html http://www.example.com/folder/ + +``` + +[Próximo código](#redirecionar-utilizando-a-directiva-redirectmatch)  •  [Voltar ao índice](#índice) + +--- + +### Redirecionar utilizando a directiva `RedirectMatch` + +**Fonte:** [Ask Apache](https://bit.ly/3gAeH8s) + +```apacheconf +# Condições necessárias para redirecionar +RedirectMatch 301 /subdirectory(.*) http://www.newsite.com/newfolder/$1 +RedirectMatch 301 ^/(.*).htm$ /$1.html +RedirectMatch 301 ^/200([0-9])/([^01])(.*)$ /$2$3 +RedirectMatch 301 ^/category/(.*)$ /$1 +RedirectMatch 301 ^/(.*)/htaccesselite-ultimate-htaccess-article.html(.*) /htaccess/htaccess.html +RedirectMatch 301 ^/(.*).html/1/(.*) /$1.html$2 +RedirectMatch 301 ^/manual/(.*)$ http://www.php.net/manual/$1 +RedirectMatch 301 ^/dreamweaver/(.*)$ /tools/$1 +RedirectMatch 301 ^/z/(.*)$ http://static.askapache.com/$1 ``` -### Alias Paths to Script -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Condições necessárias para redirecionar + RedirectMatch 301 /subdirectory(.*) http://www.newsite.com/newfolder/$1 + RedirectMatch 301 ^/(.*).htm$ /$1.html + RedirectMatch 301 ^/200([0-9])/([^01])(.*)$ /$2$3 + RedirectMatch 301 ^/category/(.*)$ /$1 + RedirectMatch 301 ^/(.*)/htaccesselite-ultimate-htaccess-article.html(.*) /htaccess/htaccess.html + RedirectMatch 301 ^/(.*).html/1/(.*) /$1.html$2 + RedirectMatch 301 ^/manual/(.*)$ http://www.php.net/manual/$1 + RedirectMatch 301 ^/dreamweaver/(.*)$ /tools/$1 + RedirectMatch 301 ^/z/(.*)$ http://static.askapache.com/$1 + +``` + +[Próximo código](#alias-para-redirecionar-de-um-diretório-para-outro-com-a-directiva-rewriterule)  •  [Voltar ao índice](#índice) + +--- + +### Alias para redirecionar de um diretório para outro com a directiva `RewriteRule` + +**Fonte:** Desconhecida + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Regra para reescrita da url +RewriteRule ^source-directory/(.*) /target-directory/$1 [R=301,L] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Regra para reescrita da url + RewriteRule ^source-directory/(.*) /target-directory/$1 [R=301,L] + +``` + +[Próximo código](#alias-para-redirecionar-todas-as-solicitações-de-um-diretório-para-um-único-arquivo)  •  [Voltar ao índice](#índice) + +--- + +### Alias para redirecionar todas as solicitações de um diretório para um único arquivo + +**Fonte:** Desconhecida + +Este código tem como exemplo um arquivo `index.fcgi`, onde este arquivo recebe todas as solicitações de um diretório, mesmo +que falhem, são enviadas novamente para o arquivo `index.fcgi`. É bom se você deseja que `baz.foo/some/cool/path` seja tratado +como `baz.foo/index.fcgi`. + +```bash FallbackResource /index.fcgi ``` -Este exemplo tem um arquivo `index.fcgi` em algum diretório, e todos os pedidos dentro desse diretório que não conseguem resolver um diretório / nome do arquivo será enviado para o` script index.fcgi`. É bom se você quer `baz.foo / some / cool / path` a ser feitos pelo` baz.foo / index.fcgi` (que também suporta pedidos de `baz.foo`), mantendo` baz.foo/css/ style.css` e semelhantes. Tenha acesso ao caminho original da variável de ambiente PATH_INFO, como exposto no seu ambiente de script. -``` apacheconf -RewriteEngine On +Esta é uma versão menos eficiente da diretiva `FallbackResource` (porque usar `mod_rewrite` é mais complexo do que apenas manipular a directiva `FallbackResource`), mas também é mais flexível. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Regra para reescrita da url RewriteRule ^$ index.fcgi/ [QSA,L] + +# Condições necessárias para reescrita RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d -RewriteRule ^(.*)$ index.fcgi/$1 [QSA,L] + +# Regra para reescrita da url +RewriteRule ^$ index.fcgi/ [QSA,L] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Regra para reescrita da url + RewriteRule ^$ index.fcgi/ [QSA,L] + + # Condições necessárias para reescrita + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + + # Regra para reescrita da url + RewriteRule ^$ index.fcgi/ [QSA,L] + ``` -Esta é uma versão menos eficiente da directiva FallbackResource (porque o uso do `mod_rewrite` é mais complexa do que apenas lidar com o` directiva FallbackResource`), mas também é mais flexível. -### Redirect an Entire Site -``` apacheconf +[Próximo código](#redirecionar-um-site-inteiro)  •  [Voltar ao índice](#índice) + +--- + +### Redirecionar um site inteiro + +**Fonte:** [CSS Tricks](https://bit.ly/31w6zkI) + +Esse código é útil se você estiver 'movendo' um site para um novo domínio, pois ele mantém todos os links intactos, por exemplo, +`www.oldsite.com/some/crazy/link.html` automaticamente se torna `www.newsite.com/some/crazy/link.html`. + +```apacheconf +# Condição necessária para redirecionar Redirect 301 / http://newsite.com/ ``` -Desta forma, faz com links intactos. Ou seja `www.oldsite.com/some/crazy/link.html` se tornará `www.newsite.com/some/crazy/link.html`. Isto é extremamente útil quando você é apenas "moving" um site para um novo domínio. [Source](http://css-tricks.com/snippets/htaccess/301-redirects/) -### Alias "Clean" URLs -Este trecho permite que você use "clean" URLs -- aqueles sem uma extensão do PHP, por exemplo `example.com/users` em vez de `example.com/users.php`. -``` apacheconf -RewriteEngine On +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Condição necessária para redirecionar + Redirect 301 / http://newsite.com/ + +``` + +[Próximo código](#limpar-a-url-de-extensões-php)  •  [Voltar ao índice](#índice) + +--- + +### Limpar a `url` de extensões `PHP` + +**Fonte:** [A Beautiful Site](https://bit.ly/3hwl4e9) + +Esse código permite que você utilize `urls` mais limpas, por exemplo, em vez de `http://example.com/user.php` usamos `http://example.com/users`. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condição necessária para reescrita RewriteCond %{SCRIPT_FILENAME} !-d -RewriteRule ^([^.]+)$ $1.php [NC,L] + +# Regra para reescrita da url +RewriteRule ^([^.]+)$ $1.php [NC, L] ``` -[Source](http://www.abeautifulsite.net/access-pages-without-the-php-extension-using-htaccess/) -## Security -### Deny All Access -``` apacheconf -## Apache 2.2 +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condição necessária para reescrita + RewriteCond %{SCRIPT_FILENAME} !-d + + # Regra para reescrita da url + RewriteRule ^([^.]+)$ $1.php [NC, L] + +``` + +[Próximo código](#excluir-uma-url-de-um-redirecionamento)  •  [Voltar ao índice](#índice) + +--- + +### Excluir uma `url` de um redirecionamento + +**Fonte:** Desconhecida + +Este código permite que você exclua uma `url` de um redirecionamento. Por exemplo, se você tiver regras de redirecionamento pré-configuradas, mas deseja excluir o arquivo `robots.txt` do redirecionamento para que os mecanismos de pesquisa possam acessar esse arquivo conforme o esperado. Utilize: + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Regra para reescrita da url +RewriteRule ^robots.txt - [L] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Regra para reescrita da url + RewriteRule ^robots.txt - [L] + +``` + +[Próxima seção](#segurança)  •  [Voltar ao índice](#índice) + +--- + +## Segurança + +**Nota:** O controle de acesso pode ser feito por vários módulos diferentes. Os mais importantes são `mod_authz_core` e `mod_authz_host`. Para mais informações consulte a seção de [controle de acesso](https://bit.ly/32q61fz) na documentação do Apache. + +### Negar acesso total + +**Fonte:** Desconhecida + +Esse código também não vai permitir que você acesso o conteúdo. O próximo trecho de código pode ser mais útil. + +```apacheconf +# Apache 2.2 Deny from all -## Apache 2.4 -# Require all denied +# Apache 2.4 +Require all denied ``` -Mas espere, isso irá bloqueá-lo a partir do seu conteúdo, bem! Assim, a introdução de ... +**Você também pode tentar:** + +```apacheconf +# Diretório a ser protegido + + + # Apache 2.2 + Deny from all + + # Apache 2.4 + Require all denied + +``` + +[Próximo código](#negar-acesso-total-exceto-o-seu-ip)  •  [Voltar ao índice](#índice) + +--- + +### Negar acesso total, exceto o seu `ip` -### Deny All Access Except Yours -``` apacheconf -## Apache 2.2 -Order deny,allow +**Fonte:** [Specky Boy](https://bit.ly/2QrCahk) + +O campo `xxx.xxx.xxx.xxx` é onde você vai colocar o seu `ip`. Se você substituir os últimos três dígitos por, `0/12` por exemplo, isso especificará um intervalo de `ips` na mesma rede, evitando assim o trabalho de listar todos os `ips` permitidos separadamente. + +```apacheconf +# Apache 2.2 +Order deny, allow Deny from all Allow from xxx.xxx.xxx.xxx -## Apache 2.4 -# Require all denied -# Require ip xxx.xxx.xxx.xxx +# Apache 2.4 +Require all denied +Require ip xxx.xxx.xxx.xxx +``` + +**Você também pode tentar:** + +```apacheconf +# Diretório a ser protegido + + + # Apache 2.2 + Order deny, allow + Deny from all + Allow from xxx.xxx.xxx.xxx + + # Apache 2.4 + Require all denied + Require ip xxx.xxx.xxx.xxx + ``` -`xxx.xxx.xxx.xxx` é seu IP. Se você substituir os três últimos dígitos com 0/12 por exemplo, isso vai especificar um intervalo de IPs dentro da mesma rede, poupando-lhe o trabalho de listar todos os IPs autorizados separadamente. [Source](http://speckyboy.com/2013/01/08/useful-htaccess-snippets-and-hacks/) -Agora é claro que há uma versão invertida: +[Próximo código](#permitir-acesso-total-exceto-spammers)  •  [Voltar ao índice](#índice) -### Allow All Access Except Spammers' -``` apacheconf -## Apache 2.2 -Order deny,allow +--- + +### Permitir acesso total, exceto `spammers` + +**Fonte:** Desconhecida + +```apacheconf +# Apache 2.2 +Order deny, allow Deny from xxx.xxx.xxx.xxx Deny from xxx.xxx.xxx.xxy -## Apache 2.4 -# Require all granted -# Require not ip xxx.xxx.xxx.xxx -# Require not ip xxx.xxx.xxx.xxy +# Apache 2.4 +Require all granted +Require not ip xxx.xxx.xxx.xxx +Require not ip xxx.xxx.xxx.xxx ``` -### Deny Access to Hidden Files and Directories -Arquivos e diretórios ocultos (aqueles cujos nomes começam com um ponto `.`) deve maioria, se não todos, o tempo ser assegurado. por exemplo: `.htaccess`, `.htpasswd`, `.git`, `.hg`... -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Diretório a ser protegido + + + # Apache 2.2 + Order deny, allow + Deny from xxx.xxx.xxx.xxx + Deny from xxx.xxx.xxx.xxy + + # Apache 2.4 + Require all granted + Require not ip xxx.xxx.xxx.xxx + Require not ip xxx.xxx.xxx.xxx + +``` + +[Próximo código](#negar-acesso-a-arquivos-e-diretórios-ocultos)  •  [Voltar ao índice](#índice) + +--- + +### Negar acesso a arquivos e diretórios ocultos + +**Fonte:** Desconhecida + +Arquivos e diretórios ocultos (são aqueles cujo nomes começam com um ponto `.`) devem ser protegidos na maior parte, senão em todo o tempo. Por exemplo: `.htaccess, .htpasswd, .git, .hg`. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condições necessárias para reescrita RewriteCond %{SCRIPT_FILENAME} -d [OR] RewriteCond %{SCRIPT_FILENAME} -f + +# Regra para reescrita da url RewriteRule "(^|/)\." - [F] ``` -Alternativamente, você pode simplesmente levantar uma `Not Found` erro, dando a cara atacante nenhuma pista: -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{SCRIPT_FILENAME} -d [OR] + RewriteCond %{SCRIPT_FILENAME} -f + + # Regra para reescrita da url + RewriteRule "(^|/)\." - [F] + +``` + +Uma alternativa mais segura: + +```apacheconf RedirectMatch 404 /\..*$ ``` -### Deny Access to Backup and Source Files -Esses arquivos podem ser deixados por alguns editores de texto / html (como Vi / Vim) e representam um grande perigo de segurança, se exposto a público. -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Condição para redirecionar + RedirectMatch 404 /\..*$ + +``` + +[Próximo código](#negar-acesso-a-arquivos-de-backup-e-de-origem)  •  [Voltar ao índice](#índice) + +--- + +### Negar acesso a arquivos de backup e de origem + +**Fonte:** [Github H5BP](https://bit.ly/2EAqkyH) + +Esses arquivos podem ser deixados por alguns editores de texto e representam um grande perigo de segurança se expostos publicamente. + +```apacheconf +# Verifica e executa a ação nos tipos de arquivos especificados - ## Apache 2.2 - Order allow,deny + + # Apache 2.2 + Order allow, deny Deny from all Satisfy All - ## Apache 2.4 - # Require all denied + # Apache 2.4 + Require all denied ``` -[Source](https://github.com/h5bp/server-configs-apache) -### Disable Directory Browsing -``` apacheconf +[Próximo código](#desativar-a-navegação-de-um-diretório)  •  [Voltar ao índice](#índice) + +--- + +### Desativar a navegação de um diretório + +**Fonte:** Desconhecida + +```apacheconf Options All -Indexes ``` -### Disable Image Hotlinking -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Diretório a ser protegido + + Options All -Indexes + +``` + +[Próximo código](#desativar-links-de-imagens)  •  [Voltar ao índice](#índice) + +--- + +### Desativar links de imagens + +**Fonte:** Desconhecida + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on -# Remova a seguinte linha se você deseja bloquear referrer em branco também -RewriteCond %{HTTP_REFERER} !^$ +# Condições necessárias para reescrita +RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?example.com [NC] -RewriteRule \.(jpe?g|png|gif|bmp)$ - [NC,F,L] -# Se você deseja exibir um banner "bloqueada" em lugar da imagem hotlink, -# Substituir a regra acima, com: -# RewriteRule \.(jpe?g|png|gif|bmp) http://example.com/blocked.png [R,L] +# Regra para reescrita da url +RewriteRule \.(jpe?g|png|gif|bmp)$ - [NC, F, L] +``` + +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{HTTP_REFERER} !^$ + RewriteCond %{HTTP_REFERER} !^https?://(.+\.)?example.com [NC] + + # Regra para reescrita da url + RewriteRule \.(jpe?g|png|gif|bmp)$ - [NC, F, L] + ``` -### Disable Image Hotlinking for Specific Domains -Às vezes você quer desabilitar imagem hotlinking de alguns bandidos só. -``` apacheconf +Se você deseja exibir um banner com uma mensagem no lugar da imagem com hotlink, substitua a regra acima por: + +```apacheconf +RewriteRule \. (jpe? g | png | gif | bmp) http://example.com/blocked.png [R, L] +``` + +[Próximo código](#desativar-links-de-imagens-de-domínios-específicos)  •  [Voltar ao índice](#índice) + +--- + +### Desativar links de imagens de domínios específicos + +**Fonte:** Desconhecida + +Às vezes, você deseja desabilitar o hotlink de imagens apenas de alguns sites maliciosos. + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on + +# Condições necessárias para reescrita RewriteCond %{HTTP_REFERER} ^https?://(.+\.)?badsite\.com [NC,OR] RewriteCond %{HTTP_REFERER} ^https?://(.+\.)?badsite2\.com [NC,OR] -RewriteRule \.(jpe?g|png|gif|bmp)$ - [NC,F,L] -# Se você deseja exibir um banner "bloqueada" em lugar da imagem hotlink, -# Substituir a regra acima, com: -# RewriteRule \.(jpe?g|png|gif|bmp) http://example.com/blocked.png [R,L] +# Regra para reescrita da url +RewriteRule \.(jpe?g|png|gif|bmp)$ - [NC, F, L] ``` -### Password Protect a Directory -Primeiro você precisa criar um arquivo `.htpasswd` em algum lugar do sistema: -``` bash -htpasswd -c /home/fellowship/.htpasswd boromir +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{HTTP_REFERER} ^https?://(.+\.)?badsite\.com [NC,OR] + RewriteCond %{HTTP_REFERER} ^https?://(.+\.)?badsite2\.com [NC,OR] + + # Regra para reescrita da url + RewriteRule \.(jpe?g|png|gif|bmp)$ - [NC, F, L] + +``` + +Se você deseja exibir um banner com uma mensagem no lugar da imagem com hotlink, substitua a regra acima por: + +```apacheconf +RewriteRule \. (jpe? g | png | gif | bmp) http://example.com/blocked.png [R, L] +``` + +[Próximo código](#proteger-um-diretório-com-senha)  •  [Voltar ao índice](#índice) + +--- + +### Proteger um diretório com senha + +**Fonte:** Desconhecida + +Primeiramente é necessário criar o arquivo com nome `.htpasswd` em algum lugar do seu sistema operacional, de preferência na sua pasta de usuários. Em seguida rode o comando: + +**Linux:** + +```bash +htpasswd -c /home/john/.htpasswd johndoe ``` -Em seguida, você pode usá-lo para autenticação: -``` apacheconf +**Windows:** + +```bash +htpasswd -c c:/users/john/.htpasswd johndoe +``` + +Agora podemos partir para a autenticação: + +```apacheconf +# Tipo de autenticação AuthType Basic -AuthName "One does not simply" -AuthUserFile /home/fellowship/.htpasswd + +# Nome: opcional +AuthName "Diretório de imagens" + +# Linux: Caminho para o arquivo .htpasswd +AuthUserFile /home/john/.htpasswd + +# Windows: Caminho para o arquivo .htpasswd +AuthUserFile c:/users/john/.htpasswd + +# Directiva de validação Require valid-user ``` -### Password Protect a File or Several Files -``` apacheconf -AuthName "One still does not simply" +**Você também pode tentar:** + +```apacheconf +# Diretório a ser protegido + + + # Tipo de autenticação + AuthType Basic + + # Nome: opcional + AuthName "Diretório de imagens" + + # Linux: Caminho para o arquivo .htpasswd + AuthUserFile /home/john/.htpasswd + + # Windows: Caminho para o arquivo .htpasswd + AuthUserFile c:/users/john/.htpasswd + + # Directiva de validação + Require valid-user + +``` + +[Próximo código](#proteger-um-ou-vários-arquivos-com-senha)  •  [Voltar ao índice](#índice) + +--- + +### Proteger um ou vários arquivos com senha + +**Fonte:** Desconhecida + +Primeiramente é necessário criar o arquivo com nome `.htpasswd` em algum lugar do seu sistema operacional, de preferência na sua pasta de usuários. Em seguida rode o comando: + +**Linux:** + +```bash +htpasswd -c /home/john/.htpasswd johndoe +``` + +**Windows:** + +```bash +htpasswd -c c:/users/john/.htpasswd johndoe +``` + +Agora podemos partir para a autenticação: + +```apacheconf +# Tipo de autenticação AuthType Basic -AuthUserFile /home/fellowship/.htpasswd +# Nome: opcional +AuthName "Diretório de imagens" + +# Linux: Caminho para o arquivo .htpasswd +AuthUserFile /home/john/.htpasswd + +# Windows: Caminho para o arquivo .htpasswd +AuthUserFile c:/users/john/.htpasswd + +# Arquivo a ser protegido -Require valid-user + # Directiva de validação + Require valid-user +# Arquivos a serem protegidos -Require valid-user + # Directiva de validação + Require valid-user ``` -### Block Visitors by Referrer -Este nega o acesso para todos os usuários que estão vindo de (indicado por) um domínio específico. -[Source](http://www.htaccess-guide.com/deny-visitors-by-referrer/) -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Diretório a ser protegido + + + # Tipo de autenticação + AuthType Basic + + # Nome: opcional + AuthName "Diretório de imagens" + + # Linux: Caminho para o arquivo .htpasswd + AuthUserFile /home/john/.htpasswd + + # Windows: Caminho para o arquivo .htpasswd + AuthUserFile c:/users/john/.htpasswd + + +# Arquivo a ser protegido + + + # Directiva de validação + Require valid-user + + +# Arquivos a serem protegidos + + + # Directiva de validação + Require valid-user + +``` + +[Próximo código](#bloquear-visitantes-de-sites-referenciadores-específicos)  •  [Voltar ao índice](#índice) + +--- + +### Bloquear visitantes de sites referenciadores específicos + +**Fonte:** [Htaccess Guide](https://bit.ly/3jgCVGj) + +Isso nega o acesso a todos os usuários que vêm de (referidos por) um domínio específico. + +```apacheconf +# Ativa o motor de reescrita RewriteEngine on -# Options +FollowSymlinks + +# Condições necessárias para reescrita RewriteCond %{HTTP_REFERER} somedomain\.com [NC,OR] RewriteCond %{HTTP_REFERER} anotherdomain\.com + +# Regra para reescrita da url RewriteRule .* - [F] ``` -### Prevent Framing the Site -Isso impede que o site para ser enquadrado (ou seja, colocar em uma `iframe` tag), quando ainda permite o enquadramento para uma URI específica. -``` apacheconf +**Você também pode tentar:** + +```apacheconf +# Verifica se o módulo está instalado + + + # Ativa o motor de reescrita + RewriteEngine on + + # Condições necessárias para reescrita + RewriteCond %{HTTP_REFERER} somedomain\.com [NC,OR] + RewriteCond %{HTTP_REFERER} anotherdomain\.com + + # Regra para reescrita da url + RewriteRule .* - [F] + +``` + +[Próximo código](#impedir-o-enquadramento-de-um-site)  •  [Voltar ao índice](#índice) + +--- + +### Impedir o enquadramento de um site + +**Fonte:** Desconhecida + +Esse código previne que o seu site seja enquadrado, ou seja, utilizado em um `iframe`, podendo permitir para domínios específicos. + +```apacheconf SetEnvIf Request_URI "/starry-night" allow_framing=true Header set X-Frame-Options SAMEORIGIN env=!allow_framing ``` -## Performance -### Compress Text Files -``` apacheconf +[Próxima seção](#desempenho)  •  [Voltar ao índice](#índice) + +--- + +## Desempenho + +### Compactar arquivos de texto + +**Fonte:** [GitHub H5bp](https://bit.ly/34CLuqV) + +Esse código força a compressão para cabeçalhos mutilados e compacta todas as saídas rotuladas com os tipos de `MIME` (para versões do Apache abaixo de 2.3.7, você não precisa habilitar `mod_filter` e pode remover o `` e ``, `AddOutputFilterByType` ainda está nas diretivas principais). + +```apacheconf - # Force compression for mangled headers. + # Força a compressão para cabeçalhos mutilados. # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html @@ -324,10 +1197,10 @@ Header set X-Frame-Options SAMEORIGIN env=!allow_framing - # Comprimir toda a saída marcada com um dos seguintes procedimentos MIME-types - # (para versões do Apache 2.3.7 abaixo, você não precisa habilitar `mod_filter` - # pode remover as linhas `` e `` - # como `AddOutputFilterByType` ainda está em diretivas principais). + # Compacta todas as saídas rotuladas com os tipos de `MIME` + # (para versões do Apache abaixo de 2.3.7, você não precisa habilitar `mod_filter` + # e pode remover o` ` e ``, `AddOutputFilterByType` + # ainda está nas diretivas principais). AddOutputFilterByType DEFLATE application/atom+xml \ application/javascript \ @@ -347,45 +1220,51 @@ Header set X-Frame-Options SAMEORIGIN env=!allow_framing text/x-component \ text/xml - ``` -[Source](https://github.com/h5bp/server-configs-apache) +[Próximo código](#definir-cabeçalhos-de-expiração)  •  [Voltar ao índice](#índice) -### Set Expires Headers -_Expira headers_ dizer ao navegador se eles devem solicitar um arquivo específico do servidor ou apenas agarrá-lo a partir do cache. É aconselhável definir um conteúdo estática que expira no futuro. -Se você não controlar o versionamento com cache baseado em filename, tem que considerar uma redução do tempo de cache para recursos como CSS e JS para algo como uma semana. [Source](https://github.com/h5bp/server-configs-apache) -``` apacheconf +--- + +### Definir cabeçalhos de expiração + +**Fonte:** [GitHub H5bp](https://bit.ly/34CLuqV) + +Os `cabeçalhos de expiração` informam ao navegador se ele deve solicitar um arquivo específico do servidor ou apenas obtê-lo do cache. É aconselhável definir os cabeçalhos de expiração do conteúdo estático para algo distante no futuro. + +Se você não controla o controle de versão com impedimento de cache baseado em nome de arquivo, considere reduzir o tempo de cache para recursos como `CSS` e `JS` para algo como 1 semana. + +```apacheconf ExpiresActive on ExpiresDefault "access plus 1 month" - # CSS + # Arquivos CSS ExpiresByType text/css "access plus 1 year" - # Data interchange + # Intercâmbio de dados ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" - # Favicon (cannot be renamed!) + # Favicons (Não pode ser renomeado) ExpiresByType image/x-icon "access plus 1 week" - # HTML components (HTCs) + # Components HTML (HTCs) ExpiresByType text/x-component "access plus 1 month" - # HTML + # Arquivos HTML ExpiresByType text/html "access plus 0 seconds" - # JavaScript + # Arquivos javascript ExpiresByType application/javascript "access plus 1 year" - # Manifest files + # Arquivos manifest ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" ExpiresByType text/cache-manifest "access plus 0 seconds" - # Media + # Arquivos de mídia ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" @@ -394,11 +1273,11 @@ Se você não controlar o versionamento com cache baseado em filename, tem que c ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" - # Web feeds + # Feeds da web ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" - # Web fonts + # Fontes da web ExpiresByType application/font-woff2 "access plus 1 month" ExpiresByType application/font-woff "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month" @@ -408,101 +1287,185 @@ Se você não controlar o versionamento com cache baseado em filename, tem que c ``` -### Turn eTags Off -Ao remover o cabeçalho `ETag`, você desativar caches e navegadores de ser capaz de validar os arquivos, então eles são forçados a confiar em seu` Cache-Control` e `cabeçalho Expires`. [Source](http://www.askapache.com/htaccess/apache-speed-etags.html) -``` apacheconf +[Próximo código](#desligar-o-http-etag-mecanismo-de-validação-condicional-de-cache)  •  [Voltar ao índice](#índice) + +--- + +### Desligar o `HTTP ETag`: Mecanismo de validação condicional de cache + +**Fonte:** [Ask Apache](https://bit.ly/3bdtp4d) + +Ao remover o cabeçalho `ETag`, você desabilita caches e navegadores de validar arquivos, então eles são forçados a confiar em seu cabeçalho `Cache-Control` e `Expires`. + +```apacheconf Header unset ETag + FileETag None ``` -## Miscellaneous +[Próxima seção](#diversos)  •  [Voltar ao índice](#índice) + +--- + +## Diversos -### Set PHP Variables -``` apacheconf +### Definir variáveis `PHP` + +**Fonte:** Desconhecida + +```apacheconf php_value +``` -# Por exemplo: +**Exemplo:** + +```apacheconf php_value upload_max_filesize 50M php_value max_execution_time 240 ``` -### Custom Error Pages -``` apacheconf -ErrorDocument 500 "Houston, você tem um problema." +[Próximo código](#páginas-de-erro-personalizadas)  •  [Voltar ao índice](#índice) + +--- + +### Páginas de erro personalizadas + +**Fonte:** Desconhecida + +```apacheconf +ErrorDocument 500 "Houston, nós temos um problema." ErrorDocument 401 http://error.example.com/mordor.html ErrorDocument 404 /errors/halflife3.html ``` -### Force Downloading -Às vezes você quer forçar o navegador para baixar algum conteúdo em vez de exibi-lo. -``` apacheconf +[Próximo código](#forçar-download-de-arquivos)  •  [Voltar ao índice](#índice) + +--- + +### Forçar `download` de arquivos + +**Fonte:** Desconhecida + +Às vezes, você deseja forçar o navegador a baixar algum conteúdo em vez de exibi-lo. + +```apacheconf ForceType application/octet-stream Header set Content-Disposition attachment ``` -Agora a um yang a este yin: +[Próximo código](#impedir-download-para-visualização-de-arquivos)  •  [Voltar ao índice](#índice) -### Prevent Downloading -Às vezes você quer forçar o navegador para exibir algum conteúdo em vez de baixá-lo. -``` apacheconf +--- + +### Impedir `download` para visualização de arquivos + +**Fonte:** Desconhecida + +Às vezes, você deseja forçar o navegador a exibir algum conteúdo em vez de baixá-lo. + +```apacheconf Header set Content-Type text/plain ``` -### Allow Cross-Domain Fonts -CDN-served webfonts pode não funcionar no Firefox ou IE devido à [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing). Este trecho resolve o problema. -``` apacheconf +[Próximo código](#permitir-webfonts-de-todos-os-domínios)  •  [Voltar ao índice](#índice) + +--- + +### Permitir `webfonts` de todos os domínios + +**Fonte:** [GitHub H5bp](https://bit.ly/3jkSKvA) + +`Webfonts` servidos por CDN podem não funcionar no `Firefox` ou `IE` devido ao [`CORS`](https://bit.ly/3llvvDv) . Este trecho resolve o problema. + +```apacheconf Header set Access-Control-Allow-Origin "*" ``` -[Source](https://github.com/h5bp/server-configs-apache/issues/32) -### Auto UTF-8 Encode -Seu texto deve ser sempre codificação UTF-8, não? -``` apacheconf -# Use codificação UTF-8 para qualquer coisa como text/plain ou text/html +[Próximo código](#definir-o-tipo-de-codificação-automaticamente-em-arquivos-específicos)  •  [Voltar ao índice](#índice) + +--- + +### Definir o tipo de codificação automaticamente em arquivos específicos + +**Fonte:** [GitHub H5bp](https://bit.ly/34CLuqV) + +`Webfonts` servidos por CDN podem não funcionar no `Firefox` ou `IE` devido ao [`CORS`](https://bit.ly/3llvvDv) . Este trecho resolve o problema. + +```apacheconf +Use a codificação UTF-8 para qualquer coisa veiculada em text/plain ou text/html AddDefaultCharset utf-8 -# Força UTF-8 para um número de formatos de arquivo +# Força UTF-8 para vários tipos de arquivos AddCharset utf-8 .atom .css .js .json .rss .vtt .xml ``` -[Source](https://github.com/h5bp/server-configs-apache) -### Switch to Another PHP Version -Se você estiver em um servidor compartilhado, as chances são de que há mais de uma versão do PHP instalado, e às vezes você quer uma versão específica para o seu site. por exemplo, [Laravel](https://github.com/laravel/laravel) requer PHP >= 5.4. O seguinte trecho deve mudar a versão do PHP para você. +[Próximo código](#mudar-a-versão-do-php-para-uma-aplicação-ou-tarefa-específica)  •  [Voltar ao índice](#índice) + +--- + +### Mudar a versão do `PHP` para uma aplicação ou tarefa específica + +**Fonte:** Desconhecida + +Se você estiver em um host compartilhado, é provável que haja mais de uma versão do `PHP` instalada e, às vezes, você deseja uma versão específica para o seu site. O seguinte código deve mudar a versão do `PHP` para você. + +```apacheconf +AddHandler application/x-httpd-php56 .php +``` -``` apacheconf -AddHandler application/x-httpd-php55 .php +**Uma alternativa:** -# Alternativamente, você pode usar AddType -AddType application/x-httpd-php55 .php +```apacheconf +AddType application/x-httpd-php56 .php ``` -### Disable Internet Explorer Compatibility View -Exibição de Compatibilidade no IE pode afetar a forma como alguns sites são exibidos. O seguinte trecho deve forçar o IE para usar o Edge Rendering Engine e desativar o Compatibility View. +[Próximo código](#desativar-o-modo-de-exibição-de-compatibilidade-do-internet-explorer)  •  [Voltar ao índice](#índice) + +--- + +### Desativar o modo de exibição de compatibilidade do Internet Explorer + +**Fonte:** Desconhecida -``` apacheconf +Exibição de compatibilidade no `IE` pode afetar a forma como alguns sites são exibidos. O código a seguir deve forçar o `IE` a usar o `Edge Rendering Engine` e desabilitar o modo de exibição de compatibilidade. + +```apacheconf BrowserMatch MSIE is-msie Header set X-UA-Compatible IE=edge env=is-msie ``` -### Serve WebP Images -Se [WebP images](https://developers.google.com/speed/webp/?csw=1) são suportados em uma imagem com uma extensão .webp e ela encontra-se no mesmo lugar como o jpg/png imagem que vai ser servida, em seguida, a imagem WebP é servido em vez do jpg/png. +[Próximo código](#permitir-a-exibiçãoveiculação-de-imagens-webp)  •  [Voltar ao índice](#índice) + +--- + +### Permitir a exibição/veiculação de imagens `.webp` -``` apacheconf -RewriteEngine On +**Fonte:** [GitHub Vincentor Back](https://bit.ly/3b0NlXL) + +Se imagens [`webp`](https://bit.ly/3lk4yAl) forem suportadas e uma imagem com extensão `.webp` e o mesmo nome for encontrada no mesmo local que a uma imagem `jpg/png` que será exibida, a imagem `webp` será exibida no lugar. + +```apacheconf +# Ativa o motor de reescrita +RewriteEngine on + +# Condições necessárias para reescrita RewriteCond %{HTTP_ACCEPT} image/webp RewriteCond %{DOCUMENT_ROOT}/$1.webp -f + +# Regra para reescrita da url RewriteRule (.+)\.(jpe?g|png)$ $1.webp [T=image/webp,E=accept:1] ``` -[Source](https://github.com/vincentorback/WebP-images-with-htaccess) + +[Voltar ao índice](#índice)