OlĂ¡ pessoal,
Bom dia!
Neste post, vou compartilhar informações de grande utilidade relacionado ao arquivo .htaccess, que Ă© o arquivo de configuraĂ§Ă£o do servidor HTTP Apache, no qual jĂ¡ fiz alguns posts sobre neste link. Essas dicas que achei no blog http://www.deuzebranaweb.com.br/ e achei o conteĂºdo excelente e resolvi compartilhar com vocĂªs essas pequenas dicas preciosas.
Para criar as regras abaixo, abra o bloco de notas ou similar, salve como “todos os arquivos” e com o nome .htaccess. Vale ressaltar que alguns cĂ³digos sĂ³ funcionarĂ£o se determinadas extensões estiverem habilitadas no apache. Caso algum cĂ³digo gere um erro 500, habilite no apache o mĂ³dulo correspondente a ele. E para evitar tais erros, faça os cĂ³digos em estruturas condicionais (<IfModule>), assim o cĂ³digo sĂ³ serĂ¡ executado caso o mĂ³dulo esteja ativo.
Ocultando o index da URL
1 2 3 4 5 |
# se o seu site Ă© feito em php, substitua os "html" pelo mesmo Options +FollowSymLinks RewriteEngine On RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^/]+/)*index\.html\ HTTP/ RewriteRule ^(([^/]+/)*)index\.html$ http://www.seusite.com.br/$1 [R=301,L] |
Protegendo o seu site contra cĂ³pia ou uso indevido de arquivos (como scripts php, js, css, imagens)
1 2 3 4 5 6 |
#Neste caso, se alguĂ©m que nĂ£o estĂ¡ na lista acima tentar usar as suas imagens direto do seu site ou usar os seus scripts, mostrarĂ¡ uma tela com erro e as imagens nĂ£o serĂ£o mostradas. RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://seusite.com.br/.*$ [NC] #este site estĂ¡ liberado a usar (o seu site no caso) RewriteCond %{HTTP_REFERER} !^http://www.seusite.com.br/.*$ [NC] #este site estĂ¡ liberado a usar RewriteCond %{HTTP_REFERER} !^http://www.google.com.br/.*$ [NC] #liberar o google para usar as suas imagens RewriteRule .*\.(jpg|jpeg|gif|png|bmp|php|js|swf)$ – [F,NC] |
Bloquear o arquivo .htaccess contra acesso pela URL
1 2 3 |
<Files ~ "^\.(htaccess|htpasswd)$"> deny from all </Files> |
Bloqueando arquivos especĂficos contra acesso pela URL
1 2 3 4 |
<files seuarquivo.php> order allow,deny deny from all </files> |
Definir a ordem padrĂ£o de carregamento dos arquivos
Por padrĂ£o, o arquivo a ser carregado quando vocĂª digita o URL do site e abre uma pĂ¡gina web, Ă© o index.html. Entetanto, isso pode ser facilmente alterado conforme a sua necessidade, alterando o arquivo .htaccess do servidor.
Utilizando o cĂ³digo abaixo, definimos que a pĂ¡gina padrĂ£o serĂ¡ index.php. Caso esse arquivo nĂ£o exista, serĂ¡ carregado o arquivo seguinte da lista (index.htm) e assim sucessivamente, atĂ© chegar no Ăºltimo arquivo da lista (pagina.php). Caso esse Ăºltimo arquivo nĂ£o exista, o apache irĂ¡ reproduzir um erro no navegador do visitante do seu site (Erro 403 – Forbidden).
1 2 |
## Pagina padrao ## DirectoryIndex index.php index.htm index.html pagina.php |
Aumentar o tempo de sessĂ£o do PHP
1 2 3 4 5 6 7 8 9 10 11 |
<IfModule mod_php5.c> # Definir o tempo mĂ¡ximo de execucao do script para 30 mins (padrĂ£o: 60s) php_value max_execution_time 1800 # Definir o tempo de expiraĂ§Ă£o de sessao para 2 horas (padrĂ£o: 24 mins) php_value session.cookie_lifetime 7200 php_value session.cache_expire 7200 php_value session.gc_maxlifetime 7200 </IfModule> |
Sempre colocar “www” na URL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<IfModule mod_rewrite.c> RewriteEngine On # Redirecionar http://dominio.com.br para http://www.dominio.com.br RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,NE,L] # Retirar / no final do link RewriteCond %{HTTP_HOST} !^\. [NC] RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L] # Remover o index.php RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)$ / [R=301,L] </IfModule> |
Comprimir arquivos do site para consumir menos banda
1 2 3 4 5 6 7 8 |
<IfModule mod_deflate.c> <FilesMatch "\.(js|css|jpg|png|gif|ico|php|html|htm)$"> <ifModule mod_filter.c> SetOutputFilter DEFLATE AddOutputFilterByType DEFLATE text/css text/javascript application/x-javascript text/html text/plain text/xml image/x-icon </IfModule> </FilesMatch> </IfModule> |
Ativando compressĂ£o com o DEFLATE
Esta Ă© a compressĂ£o mais fĂ¡cil de configurar no servidor e jĂ¡ vem habilitada por padrĂ£o. Utiliza menos processamento do servidor que o GZip, mas nĂ£o compacta tanto como o mesmo.
1 2 3 4 5 6 7 8 9 10 11 12 |
<IfModule mod_deflate.c> # Compactar por tipo - html, text, css, xml AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml # Compactar por tipo - javascript AddOutputFilterByType DEFLATE application/x-javascript application/javascript text/javascript text/x-js text/x-javascript # Compactar por extensĂ£o AddOutputFilter DEFLATE js css htm html xml ttf eot </IfModule> |
Ativando compressĂ£o com o GZip
O GZip vem ganhando muito espaço hoje em dia na Web devido ao seu grande poder de compressĂ£o de dados, diminuindo o tempo de carregamento das pĂ¡ginas drasticamente, principalmente quando falamos de internet mĂ³vel (3G) no Brasil, que ainda Ă© muito lenta e precĂ¡ria em vĂ¡rios lugares. Por apresentar um alto nĂvel de compressĂ£o, exige mais processamento que o mĂ©todo de compressĂ£o DEFLATE.
1 2 3 4 5 6 7 8 9 10 |
<IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl|ttf|eot)$ mod_gzip_item_include handler ^cgi-script$ mod_gzip_item_include mime ^text/.* mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* </IfModule> |
Criando pĂ¡ginas de erros personalizadas
1 2 3 |
ErrorDocument 400 /sua-pagina-erro-400 ErrorDocument 404 /pĂ¡gina-de-erro-404 ErrorDocument 500 /pĂ¡gina-para-erro-500 |
Alterar a pĂ¡gina inicial (padrĂ£o) do site
1 2 3 |
DirectoryIndex minhaoutrapagina.html Redirecionamento 301 com htaccess Redirect 301 /pĂ¡gina-a-ser-movida http://www.seusite.com.br/pagina-movida-para-ca |
Bloquear listagem de diretĂ³rios
1 2 3 4 5 6 7 8 |
# Impedir a listagem de arquivos no endereço www.seudominio.com/images/ IndexIgnore /images/* # Impedir a listagem do prĂ³prio .htaccess e vĂ¡rias outras extensões de arquivos, alĂ©m do arquivo teste.xls IndexIgnore .htaccess *.php *.js *.css *.htm *.html *.log *.sql *.pdf *.swf *.rtf *.doc *.odt teste.xls # Impedir a listagem de qualquer arquivo e diretĂ³rio Options -Indexes |
Forçar o uso de SSL
1 2 3 |
RewriteEngine On RewriteCond %{SERVER_PORT} 80 RewriteRule ^(.*)$ https://seu-site.com.br/$1 [R,L] |
Desabilitar case sensitive
1 2 |
CheckSpelling On #agora a url PAGINA.HTML Ă© igualmente acessada por pagina.html |
Restringindo o acesso por IP
1 2 3 4 5 6 7 8 9 10 11 |
Order allow,deny allow from 192.168.0. deny from all # Deixa a somente a INTRANET acessar Order deny,allow deny from 192.168.0.25 allow from all # Deixa todo mundo acessar, menos o IP 192.168.0.25 Order deny, allow deny from all #bloquear geral |
Redirecionar acesso de um site para outro lugar
1 2 3 4 |
RewriteEngine on RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?bloqueado.com.br.*$ [NC] RewriteRule .* http://www.antispam.br [R,L] #Se o site "bloqueado" mandar algum visitante para aqui, Ă© redirecionado para o "antispam" |
Expressões regulares
1 2 3 4 5 6 7 8 |
#todos os arquivos de uma pĂ¡gina serĂ£o redirecionados para outra RewriteEngine on RewriteRule ^pagina-antiga/(.*) http://www.novosite.com.br/pagina-antiga/$1 #redirecionar somente os arquivos terminados em php RewriteEngine om RewriteRule ^pagina-antiga/(.*)\.php http://www.novosite.com.br/pagina-antiga/$1.php #redirecionar tudo de um site para outro RedirectMatch permanent /(.*) http://www.novosite.com/$1 |
Retirar extensões da URL
1 2 3 4 5 |
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html #neste caso, estou retirando apenas o HTML |
Forçar o uso do Charset UTF-8 para arquivos
1 2 3 |
<FilesMatch "\.(htm|html|css|js)$"> AddDefaultCharset UTF-8 </FilesMatch> |
Cache de navegador – Definir tempo de expiraĂ§Ă£o (segundos)
1 2 3 4 5 6 7 8 9 10 |
<ifModule mod_expires.c> ExpiresActive On ExpiresDefault A0 ExpiresByType image/gif A604800 ExpiresByType image/jpeg A604800 ExpiresByType image/png A604800 ExpiresByType text/css A604800 ExpiresByType text/javascript A604800 ExpiresByType application/x-javascript A604800 </ifModule> |
Cache de navegador – Definir controle de cache (segundos)
1 2 3 4 5 6 7 8 |
<IfModule mod_headers.c> <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|xml|woff)$"> Header set Cache-Control "max-age=604800, public" Header append Vary User-Agent env=!dont-vary Header append Vary Accept-Encoding Header unset Pragma </FilesMatch> </IfModule> |
Cache de navegador – Forçar o uso do cache, desabilitando o ETag
1 2 3 4 |
<IfModule mod_headers.c> Header unset Etag Header unset Last-Modified </IfModule> |
Adicionar novos mimetypes
1 |
AddType application/x-endnote-connection enz AddType application/x-endnote-filter enf AddType application/x-spss-savefile sav |
Desabilitar execuĂ§Ă£o de certos Scripts
1 2 |
Options -ExecCGI AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi |
Alterar a linguagem PadrĂ£o
1 |
DefaultLanguage en-US |
Alterar fuso horĂ¡rio padrĂ£o
1 |
SetEnv TZ America/Indianapolis |
Forçar download de certos arquivos
1 |
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4 |
Bloquear requisiĂ§Ă£o baseado no user-agent
1 2 3 |
SetEnvIfNoCase ^User-Agent$ .*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures) HTTP_SAFE_BADBOT SetEnvIfNoCase ^User-Agent$ .*(libwww-perl|aesop_com_spiderman) HTTP_SAFE_BADBOT Deny from env=HTTP_SAFE_BADBOT |
É isso aĂ, pessoal!
Espero que tenham gostado desse post e atĂ© o prĂ³ximo.
OlĂ¡, veja se pode me ajudar … Instalei o Xampp (Windows) e gostaria de saber como eu faço gerenciar o arquivo de log do apache, o meu arquivo de log estĂ¡ com 50 MB e futuramente terei problemas, Ă© possĂvel delimitar um tamanho e depois de atingindo o tamanho, o arquivo de log auto reciclar ?
Outra dĂºvida como faço para o arquivo de log registre o usuĂ¡rio de rede de quem acessa uma pĂ¡gina em PHP ?
Obrigado !