|
| 1 | +####################################################################### |
| 2 | +# |
| 3 | +# Fácil MVC - Arquivo de filtro geral do framework |
| 4 | +# |
| 5 | +# Opções padrão: |
| 6 | +# |
| 7 | +# -> Indexes gera um arquivo com a lista do conteúdo |
| 8 | +# de um diretório sempre que a URL chamada apontar |
| 9 | +# pra um diretório que não tenha arquivo index |
| 10 | +# (como index.html ou index.php) |
| 11 | +# |
| 12 | +# -> - Indexes desliga essa opção e gera Forbidden nesse caso |
| 13 | +# |
| 14 | +# -> MultiViews em URLs que apontem para um diretório que não exista |
| 15 | +# faz o Apache procurar por arquivos com o mesmo nome e qualquer extensão |
| 16 | +# Assim: /caminho/pra/diretorio pode achar /caminho/pra/diretorio.php |
| 17 | +# |
| 18 | +# -> - MultiViews no nosso caso evita index (ação) ser considerado index.php |
| 19 | +# (index.php é o nosso arquivo Front-Controller) |
| 20 | +# |
| 21 | +# -> + FollowSymlinks informa ao servidor que percorra o links simbólicos. |
| 22 | +# Atalhos criados no sistema de arquivos para simplificar e reaproveitar |
| 23 | +# os endereçamentos de recursos. |
| 24 | +# Esta diretiva deve estar ligada uma vez que precisamos do mod_rewrite |
| 25 | +# |
| 26 | +######################################################################## |
| 27 | + |
| 28 | +options -Indexes -MultiViews +FollowSymlinks |
| 29 | + |
| 30 | + |
| 31 | +####################################################################### |
| 32 | +# |
| 33 | +# Configurações Gerais PHP_INI_PER_DIR |
| 34 | +# |
| 35 | +# -> Desligando opções depreciadas. |
| 36 | +# -> Ligando short_open_tag para poder permitir <?= nas templates. |
| 37 | +# A partir do PHP 5.4+ as expressões <?= não precisam desta diretiva |
| 38 | +# para funcionarem, portanto você não precisa ligá-la |
| 39 | +# apenas por este motivo. |
| 40 | +# Leia mais: https://bugs.php.net/bug.php?id=50662 |
| 41 | +# -> Restringindo uso de cookies a envios HTTP, indicando ao browser |
| 42 | +# que não tente abrir esses cookies se algum Javascript solicitar. |
| 43 | +# Isso previne certos tipos de ataques XSS. |
| 44 | +# Leia mais: http://php.net/function.setcookie.php#79488 |
| 45 | +# |
| 46 | +######################################################################## |
| 47 | + |
| 48 | +php_flag magic_quotes_gpc Off |
| 49 | +php_flag magic_quotes_runtime Off |
| 50 | +php_flag magic_quotes_sybase Off |
| 51 | +php_flag register_globals Off |
| 52 | +php_flag short_open_tag On |
| 53 | +php_flag session.cookie_httponly On |
| 54 | + |
| 55 | + |
| 56 | +####################################################################### |
| 57 | +# |
| 58 | +# Seguindo as sugestões do HTML5 Boilerplate para |
| 59 | +# padronização do tipo MIME de certos arquivos |
| 60 | +# |
| 61 | +####################################################################### |
| 62 | +AddType application/javascript js |
| 63 | +AddType audio/ogg oga ogg |
| 64 | +AddType audio/mp4 m4a |
| 65 | +AddType video/ogg ogv |
| 66 | +AddType video/mp4 mp4 m4v |
| 67 | +AddType video/webm webm |
| 68 | +AddType image/svg+xml svg svgz |
| 69 | +AddEncoding gzip svgz |
| 70 | +AddType application/vnd.ms-fontobject eot |
| 71 | +AddType application/x-font-ttf ttf ttc |
| 72 | +AddType font/opentype otf |
| 73 | +AddType application/x-font-woff woff |
| 74 | +AddType image/x-icon ico |
| 75 | +AddType image/webp webp |
| 76 | +AddType text/cache-manifest appcache manifest |
| 77 | +AddType text/x-component htc |
| 78 | +AddType application/x-chrome-extension crx |
| 79 | +AddType application/x-opera-extension oex |
| 80 | +AddType application/x-xpinstall xpi |
| 81 | +AddType application/octet-stream safariextz |
| 82 | +AddType application/x-web-app-manifest+json webapp |
| 83 | +AddType text/x-vcard vcf |
| 84 | + |
| 85 | + |
| 86 | +####################################################################### |
| 87 | +# |
| 88 | +# Ligando o ModRewrite para as principais regras de navegação |
| 89 | +# |
| 90 | +####################################################################### |
| 91 | + |
| 92 | +<IfModule mod_rewrite.c> |
| 93 | + RewriteEngine On |
| 94 | + |
| 95 | + ################################################################### |
| 96 | + # Bloqueando acesso (Forbidden) a qualquer arquivo ou |
| 97 | + # diretório oculto. Iniciado pelo ponto |
| 98 | + ################################################################### |
| 99 | + #RewriteCond %{REQUEST_FILENAME} -d |
| 100 | + #RewriteCond %{REQUEST_FILENAME} -f |
| 101 | + RewriteRule "(^|/)\." - [F,L] |
| 102 | + |
| 103 | + ################################################################### |
| 104 | + # Direcionando chamadas a combos de js e css por arquivo de |
| 105 | + # mapeamento de combos que devem existir com extensão |
| 106 | + # .combo.js ou .combo.css. |
| 107 | + # Eles devem ter uma lista separada por quebra de linha (\n) de |
| 108 | + # todas as URLs para arquivos .js existentes |
| 109 | + ################################################################### |
| 110 | + RewriteRule .*?\.combo((\.js)|(\.css))$ index.php?_combo=$0 [L] |
| 111 | + |
| 112 | + ################################################################### |
| 113 | + # Direcionando chamadas a combos de js e css por pasta. |
| 114 | + # No lugar de apontar para algum arquivo específico |
| 115 | + ################################################################### |
| 116 | + RewriteCond %{REQUEST_FILENAME} !-d |
| 117 | + RewriteCond %{REQUEST_FILENAME} !-f |
| 118 | + RewriteRule .*/(.*)/\1((\.js)|(\.css))$ index.php?_combodir=$0 [L] |
| 119 | + |
| 120 | + ################################################################### |
| 121 | + # Capturando chamadas a js, img, css e recursos |
| 122 | + # Ligar essa diretiva pode aumentar a carga no servidor uma vez |
| 123 | + # que toda requisição para arquivo estático vai passar pelo PHP. |
| 124 | + # Mas haverá a vantagem dele poder processar internacionalização |
| 125 | + # também nos arquivos .js e .css além de poder reduzir o tamanho |
| 126 | + # destes (minify) o que pode melhorar o desempenho se o gargalo |
| 127 | + # estiver no tráfego e não no processamento da máquina. |
| 128 | + ################################################################### |
| 129 | + RewriteRule .*?((js/)|(css/)|(imagens/)|(recursos/))(.*) index.php?_url=$0 [L] |
| 130 | + |
| 131 | + ################################################################### |
| 132 | + # Direcionando toda URL que não apontar para recurso existente para |
| 133 | + # index.php passando o caminho para a variavel $url |
| 134 | + ################################################################### |
| 135 | + RewriteCond %{REQUEST_FILENAME} !-d |
| 136 | + RewriteCond %{REQUEST_FILENAME} !-f |
| 137 | + RewriteRule ^(.*)$ index.php?_url=$1 [QSA,L] |
| 138 | + |
| 139 | +</IfModule> |
| 140 | + |
| 141 | + |
| 142 | +####################################################################### |
| 143 | +# |
| 144 | +# Compactação Gzip para diminuição de tráfego |
| 145 | +# |
| 146 | +####################################################################### |
| 147 | + |
| 148 | +<IfModule mod_deflate.c> |
| 149 | + # Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/ |
| 150 | + <IfModule mod_setenvif.c> |
| 151 | + <IfModule mod_headers.c> |
| 152 | + SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding |
| 153 | + RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding |
| 154 | + </IfModule> |
| 155 | + </IfModule> |
| 156 | + |
| 157 | + |
| 158 | + # HTML, TXT, CSS, JavaScript, JSON, XML, HTC: |
| 159 | + <IfModule filter_module> |
| 160 | + FilterDeclare COMPRESS |
| 161 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html |
| 162 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css |
| 163 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain |
| 164 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml |
| 165 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component |
| 166 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript |
| 167 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/json |
| 168 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xml |
| 169 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/xhtml+xml |
| 170 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/rss+xml |
| 171 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/atom+xml |
| 172 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/vnd.ms-fontobject |
| 173 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $image/svg+xml |
| 174 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $image/x-icon |
| 175 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $application/x-font-ttf |
| 176 | + FilterProvider COMPRESS DEFLATE resp=Content-Type $font/opentype |
| 177 | + FilterChain COMPRESS |
| 178 | + FilterProtocol COMPRESS DEFLATE change=yes;byteranges=no |
| 179 | + </IfModule> |
| 180 | + |
| 181 | + <IfModule !mod_filter.c> |
| 182 | + # Legacy versions of Apache |
| 183 | + AddOutputFilterByType DEFLATE text/html text/plain text/css application/json |
| 184 | + AddOutputFilterByType DEFLATE application/javascript |
| 185 | + AddOutputFilterByType DEFLATE text/xml application/xml text/x-component |
| 186 | + AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml |
| 187 | + AddOutputFilterByType DEFLATE image/x-icon image/svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype |
| 188 | + </IfModule> |
| 189 | + |
| 190 | +</IfModule> |
| 191 | + |
| 192 | + |
| 193 | +####################################################################### |
| 194 | +# |
| 195 | +# Adicionando cabeçalhos Expires para conteúdo estático |
| 196 | +# |
| 197 | +####################################################################### |
| 198 | + |
| 199 | +<IfModule mod_expires.c> |
| 200 | + ExpiresActive on |
| 201 | + |
| 202 | + ExpiresDefault "access plus 1 month" |
| 203 | + ExpiresByType text/cache-manifest "access plus 0 seconds" |
| 204 | + ExpiresByType text/html "access plus 0 seconds" |
| 205 | + ExpiresByType text/xml "access plus 0 seconds" |
| 206 | + ExpiresByType application/xml "access plus 0 seconds" |
| 207 | + ExpiresByType application/json "access plus 0 seconds" |
| 208 | + ExpiresByType application/rss+xml "access plus 1 hour" |
| 209 | + ExpiresByType application/atom+xml "access plus 1 hour" |
| 210 | + ExpiresByType image/x-icon "access plus 1 week" |
| 211 | + ExpiresByType image/gif "access plus 1 month" |
| 212 | + ExpiresByType image/png "access plus 1 month" |
| 213 | + ExpiresByType image/jpg "access plus 1 month" |
| 214 | + ExpiresByType image/jpeg "access plus 1 month" |
| 215 | + ExpiresByType video/ogg "access plus 1 month" |
| 216 | + ExpiresByType audio/ogg "access plus 1 month" |
| 217 | + ExpiresByType video/mp4 "access plus 1 month" |
| 218 | + ExpiresByType video/webm "access plus 1 month" |
| 219 | + ExpiresByType text/x-component "access plus 1 month" |
| 220 | + ExpiresByType application/x-font-ttf "access plus 1 month" |
| 221 | + ExpiresByType font/opentype "access plus 1 month" |
| 222 | + ExpiresByType application/x-font-woff "access plus 1 month" |
| 223 | + ExpiresByType image/svg+xml "access plus 1 month" |
| 224 | + ExpiresByType application/vnd.ms-fontobject "access plus 1 month" |
| 225 | + ExpiresByType text/css "access plus 1 month" |
| 226 | + ExpiresByType application/javascript "access plus 1 month" |
| 227 | + |
| 228 | +</IfModule> |
| 229 | + |
| 230 | + |
| 231 | +####################################################################### |
| 232 | +# |
| 233 | +# Removendo cabeçalho de controle de cache ETag |
| 234 | +# Não funciona em servidores clusterizados e não traz nenhuma |
| 235 | +# vantagem considerável com relação ao controle via |
| 236 | +# Last-Modified. Portanto, retirá-lo reduz um cabelo de sapo |
| 237 | +# o tamanho da resposta do servidor |
| 238 | +# |
| 239 | +####################################################################### |
| 240 | + |
| 241 | +<IfModule mod_headers.c> |
| 242 | + Header unset ETag |
| 243 | +</IfModule> |
| 244 | +FileETag None |
| 245 | + |
| 246 | +####################################################################### |
| 247 | +# |
| 248 | +# Redirecionando requsições que forneceram www para a opção sem www. |
| 249 | +# Colocamos as duas técnicas conforme sugerido no HTML5 Boilerplate. |
| 250 | +# No entanto não habilitamos nenhuma para que você possa escolher |
| 251 | +# ou mesmo nunca ligar em situações onde a máquina www for diferente |
| 252 | +# da máquina padrão de autoridade pelo domínio. |
| 253 | +# O que motiva esse redirecionamento são as técnicas de SEO que |
| 254 | +# consideram esse conteúdo duplicado (em duas URLs) algo ruim |
| 255 | +# |
| 256 | +####################################################################### |
| 257 | + |
| 258 | +# Opção 1 (a mais indicada): |
| 259 | +# Rewrite "www.example.com -> example.com" |
| 260 | + |
| 261 | +# <IfModule mod_rewrite.c> |
| 262 | +# RewriteCond %{HTTPS} !=on |
| 263 | +# RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] |
| 264 | +# RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] |
| 265 | +# </IfModule> |
| 266 | + |
| 267 | +# ---------------------------------------------------------------------- |
| 268 | + |
| 269 | +# Option 2 (só libere aqui se comentar a primeira opção): |
| 270 | +# Rewrite "example.com -> www.example.com" |
| 271 | + |
| 272 | +# <IfModule mod_rewrite.c> |
| 273 | +# RewriteCond %{HTTPS} !=on |
| 274 | +# RewriteCond %{HTTP_HOST} !^www\..+$ [NC] |
| 275 | +# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] |
| 276 | +# </IfModule> |
| 277 | + |
| 278 | + |
0 commit comments