Palavra:   

Revista PHP / Miscelânea

Flávia Jobstraibizer

Analista de sistemas, DBA Mysql, PostgreSQL, Oracle, SQLServer e Firebird. Desenvolvedora de sistemas, e administradora de servidores FreeBSD. Conheça o site www.flaviajobs.com.br

Truques com .htaccess - Parte III

Nesta terceira parte dos truques e dicas de .htaccess, vou abordar algumas funções também bastante úteis, e até mesmo pouco divulgadas.

Geralmente os servidores configuram com CGI ou shtml as páginas de erro. Eu particularmente acredito que com .htaccess fica bem mais fácil gerenciá-las (até mesmo porque, com um script de geração de arquivos .htaccess confeccionado em PHP, você pode trocar sempre que quiser suas páginas de erro.)
PHP
  1. ErrorDocument 400 /errors/badrequest.php
  2. ErrorDocument 401 /errors/authrequerida.php
  3. ErrorDocument 403 /errors/proibido.php
  4. ErrorDocument 404 /errors/naoencontrado.php
  5. ErrorDocument 500 /errors/erroservidor.php
www.revistaphp.com.br
Assim, você pode gerenciar melhor suas páginas de erro, e mesmo que precise alterar na mão, fica muito mais fácil, pois va estar tudo dentro um mesmo arquivo, concorda? Atente-se para o fato de que estas diretivas de páginas de erro, devem estar na raíz do site (pasta public_html).

Agora um item que acho importante. Bloquear aqueles programinhas que baixam todo o site, os famosos ripadores ou "navegadores offline". Existem sites e programas que fazem isso, e alguns deles podem ser bloqueados também por meio do arquivo .htaccess (na raíz do site).
PHP
  1. RewriteEngine On
  2. RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
  3. RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo.com [OR]
  4. RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
  5. RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
  6. RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
  7. RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
  8. RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
  9. RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
  10. RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
  11. RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
  12. RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
  13. RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
  14. RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
  15. RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
  16. RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
  17. RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
  18. RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
  19. RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
  20. RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
  21. RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
  22. RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
  23. RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
  24. RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
  25. RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
  26. RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
  27. RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
  28. RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
  29. RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
  30. RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
  31. RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
  32. RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
  33. RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
  34. RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
  35. RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
  36. RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
  37. RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
  38. RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
  39. RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
  40. RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
  41. RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
  42. RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
  43. RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
  44. RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
  45. RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
  46. RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
  47. RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
  48. RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
  49. RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
  50. RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
  51. RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
  52. RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
  53. RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
  54. RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
  55. RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
  56. RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
  57. RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
  58. RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
  59. RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
  60. RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
  61. RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
  62. RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
  63. RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
  64. RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
  65. RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
  66. RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
  67. RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
  68. RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
  69. RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
  70. RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
  71. RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
  72. RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
  73. RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
  74. RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
  75. RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
  76. RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
  77. RewriteCond %{HTTP_USER_AGENT} ^Zeus
  78. RewriteRule ^.* - [F,L]
www.revistaphp.com.br
Estes são apenas alguns dos softwares de baixar conteúdo, que você pode bloquear. Lembrando que pra isso ficar atualizado, você precisa sempre se informar sobre novos produtos com esta finalidade, para adicionar a esta lista.

Há vários desenvolvedores, sofrendo com cabeçalhos no php, para forçar o download de alguma aplicação. As vezes não queremos isso no script, por n motivos. As vezes você está num ambiente de teste ou então no seu proprio ambiente e não precisa nem quer configurar cabeçalhos no script php. Com a função AddType, você pode forçar que em determinado conteúdo, abra a tela de download ao invés de abrir no navegador. Muito, muito útil!

PHP
  1. AddType application/octet-stream .avi
  2. AddType application/octet-stream .mpg
www.revistaphp.com.br
Assim, você pode linkar o arquivo .avi por exemplo, para que o usuário baixe, sem correr o risco de que o Media Player dele abra pra executar o arquivo! Simples não?

Controle de cache
O pessoal que gera conteúdo dinâmico, se preocupa muito com cache, seja de arquivos, flash, imagens, etc. Existem regras para forçar o esvaziamento do cache com determinado tempo, ou então manter caso o arquivo não seja atualizado frequentemente. Ambas as regras são úteis. A última é mais útil pra quem tem galerias de fotos que não serão atualizadas frequentemente, como no caso de albuns, ou então imagens estáticas de sites. Isso economiza um pouco de banda, visto que uma vez acessado, poderá ser guardado no cache durante o tempo que você determinar.
PHP
  1. # Uma semana de cache nos arquivos mencionados
  2. <FilesMatch "\.(js|css|pdf|swf)$">
  3. Header set Cache-Control "max-age=604800"
  4. </FilesMatch>
  5. # 10 minutos de cache nestes arquivos
  6. <FilesMatch "\.(html|htm|txt)$">
  7. Header set Cache-Control "max-age=600"
  8. </FilesMatch>
  9. # não gravar cache nestes arquivos
  10. <FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
  11. Header unset Cache-Control
  12. </FilesMatch>
www.revistaphp.com.br
Note que você pode ter vários tipos de cache para cada tipo de arquivo. Assim, você pode balancear o que deseja não guardar cache, caso seja conteúdo dinâmico que precisa estar sempre atualizado, e o que quer guardar para economizar desempenho do servidor. E veja que caso você esteja em uma empresa de hospedagem, você nem precisa incomodá-los com estas questões! Muda ou não muda a sua vida? ;)

Na quarta parte desta série, vou abordar mais algumas funções super úteis do .htaccess. Creio que nesta altura, você deve querer saber o que mais ele pode fazer pra facilitar a sua vida!

Opções de Interação

Comentários

Oi Flávia
Por: Odlanier, 05/03/2009   22:34:51
Gostei muuuuuuuuuuito desse trecho do seu tutorial, parabéns mesmo!! Foi muito útil pra mim esse lance de bloquear os espiões pelo htacess, já que pelo robots.txt nao adianta né!!! Linda, muuuuito obrigado mesmo vlw.

A realmente as pessoas são mal agradecidas mesmo, eu sou colaborador em uma comunidade Brasileiro do Prestashop, e sei como é ... Sucesso pra vc ruiva !