Tutorial: 12 hacks de htaccess que todo desenvolvedor deveria conhecer

  • Autor Autor Khriz
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Khriz

Khriz

Delta
Usuário com poucas negociações! Use sempre o saldo do ForoBeta!
Hola! Enlace eliminado

Aquí una Recopilacion sobre la configuración del archivo .htaccess de Apache (hypertext access) puede ser una herramienta muy ponderosa en el desarrollo web si se utiliza de la forma adecuada.

Mediante .htaccess podremos realizar redirecciones, proteger archivos y directorios con contraseña, prevenir el hotlinking y el robo de ancho de banda, comprimir archivos y mucho, mucho más:

Asegúrate de hacer un backup de tu archivo .htaccess actual antes de aplicar cualquiera de estos hacks.

1. Prevenir el Hotlinking

¿Estás cansado de que la gente utilice tu ancho de banda poniendo las imágenes albergadas en tu servidor en su sitio web? Añade el siguiente código al final de tu archivo .htaccess para prevenir el hotlinking:

Inserir CODE, HTML ou PHP:
Options +FollowSymlinks
Protect against hotlinking
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?nombrededominio.com/ [nc]
RewriteRule .*.(gif|jpg|png)$ http://nombrededominio.com/img/no_robar_ancho_de_banda.gif[nc]


2. Bloquea todas las peticiones del user-agent

Es posible bloquear a todos los user-agents indeseados que pueden ser potencialmente dañinos o quizá simplemente para mantener la carga del servidor lo más baja posible.

Inserir CODE, HTML ou PHP:
Block bad bots
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]

Order Allow,Deny
Allow from all
Deny from env=bad_bot


3. Redirecciona a todos, excepto a ciertas IPs


Si por alguna razón deseas denegar el acceso a todos los usuarios o sólo permitir a un cierto grupo de direcciones IP para que tengan acceso a tu sitio, añade el siguiente código a tu archivo .htaccess:

Inserir CODE, HTML ou PHP:
ErrorDocument 403 http://www.nombrededominio.com
Order deny,allow
Deny from all
Allow from 124.34.48.165
Allow from 102.54.68.123


4. Redirecciones 301 amigables con SEO

Si has transferido nombres de dominio o deseas redireccionar a una página específica sin que afecte a los resultados de los motores de búsqueda como Google, utiliza el siguiente código:

Inserir CODE, HTML ou PHP:
Redirect 301 /d/file.html http://www.nombrededominio.com/r/file.html

5. Página personalizada para cada tipo de error

Si te cansaste del diseño por defecto de las páginas de error 401, 403, 404, 500, etc. puedes fácilmente crear la tuya propia y referirte hacía ella de esta forma:

Inserir CODE, HTML ou PHP:
ErrorDocument 401 /error/401.php
ErrorDocument 403 /error/403.php
ErrorDocument 404 /error/404.php
ErrorDocument 500 /error/500.php

6. Crea una lista de IPs prohibidas

¿Te cansaste de obtener siempre los mismos comentarios de ciertos usuarios una y otra vez? Simplemente prohíbe el acceso a determinadas IPs, añadiendo el siguiente código:

Inserir CODE, HTML ou PHP:
allow from all
deny from 145.186.14.122
deny from 124.15


7. Deshabilita la ventana de aviso de descarga

Usualmente al descargar algo de un sitio web, saltará una ventana que pregunta si deseas abrir el archivo o guardarlo en tu PC. Para prevenir esto, utiliza el siguiente código:

Inserir CODE, HTML ou PHP:
AddType application/octet-stream .pdf
AddType application/octet-stream .zip
AddType application/octet-stream .mov


8. Proteje tus archivos y directorios con una contraseña

Inserir CODE, HTML ou PHP:
#proteger un archivo con contraseña
AuthType Basic
AuthName "Prompt"
AuthUserFile /home/path/.htpasswd
Require valid-user

# proteger un directorio con contraseña

resides
AuthType basic
AuthName "This directory is protected"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null
Require valid-user


9. Redirección 301 de un dominio viejo a uno nuevo

Incluyendo este snippet en el .htaccess de tu viejo dominio, conseguirás redigir a otro nuevo (sin ser penalizado por Google por duplicar contenido, dado que el 301 es un aviso de "redirección permanente"):

Inserir CODE, HTML ou PHP:
RewriteEngine On
RewriteRule ^(.*)$ http://www.nuevodominio.com/$1 [R=301,L]


10. Remover la extensión del archivo de una URL

Para que sea más amigable al usuario y a los buscadores, por ejemplo "http://www.tudominio.com/autos.html" -> "http://www.tudominio.com/autos"

Inserir CODE, HTML ou PHP:
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]

11. Quitar el "www" del dominio

Inserir CODE, HTML ou PHP:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.dominio\.com$ [NC]
RewriteRule ^(.*)$ http://dominio.com/$1 [L,R=301]


12. Redireccionar hacia las "www"

Inserir CODE, HTML ou PHP:
Options +FollowSymLinks

RewriteEngine on
RewriteCond %{HTTP_HOST} ^tudominio.com [NC]
RewriteRule ^(.*)$ http://www.tudominio.com/$1 [L,R=301]


13. Redireccionar hacia las no-www

Inserir CODE, HTML ou PHP:
Options +FollowSymLinks 

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]


14. Forzar el cacheo

El siguiente snippet no va a incrementar directamente la velocidad de carga de tu sitio en general, pero sí va a cargar más rápido cuando el mismo usuario vuelva a visitarlo al enviar un status 304 cuando se pidan elementos que no han sido modificados. Puedes cambiar la frecuencia de cacheo al cambiar el número de segundos (en este ejemplo se da una vez al día):

Inserir CODE, HTML ou PHP:
FileETag MTime Size
ExpiresActive on
ExpiresDefault "access plus 86400 seconds"

Saludos!
 
Última edição:
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
Muchas gracias por la información. Muy útil sin duda, esto hay que guardarlo para ojear de vez en cuando.
 
Excelente información, como dice cocoidal, yo tambien la guardo para tenerla a la mano. Gracias
 
Muchas gracias por el resumen, me lo guardo. :smile:
 
Gracias por todo esto, usare un par en algunos de mis sitios...
 
Me quedo con la número 6 y la 8. Gracias!

Ps: ¿Podrías comentar la fuente de donde lo sacaste?
 
Me pregunto si el No. 5 (páginas de error) funciona tambien redireccionando hacia páginas html en vez de php


Muchas gracias por la información.
 
Gracias por la información me será útil
 
Me pregunto si el No. 5 (páginas de error) funciona tambien redireccionando hacia páginas html en vez de php


Muchas gracias por la información.

Creo que sí funciona con otras páginas que no sean .php. :smile:
 
Gracias, creo que me será útil
 
esto lo tienen copy/pasteado miles de webs pero bueno, seguro muchos no lo vieron.
 
Gracias por el aporte! :biggrin:
 
buen temas gracias por la informacion bastante util
 
muchas gracias por la informacion es muy inportante
 
Perdona mi ignorancia, pero nunca abrí el .htaccess hasta hoy xD

Si mi .htaccess sin tocar es:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Y le quiero incluír algún código, ¿se copiaría entre el "# BEGIN WordPress" y el "# END WordPress"?

Tnx!
 
Depende del código, pero si es una regla debe ir entre los <if>, preferentemente al principio.
 
y las lineas que tienen "#" al inicio son comentarios.
 
Se agradece el aporte 🙂
 
Voltar
Topo