Según wikipedia:
Un fichero .htaccess (hypertext access), también conocido como archivo de configuración distribuida, es un fichero especial, popularizado por el Servidor HTTP Apache que permite definir diferentes directivas de configuración para cada directorio (con sus respectivos subdirectorios) sin necesidad de editar el archivo de configuración principal de Apache.
Índice
- Carpetas de control de acceso
- Listado de Carpetas
- Habilitar la compresión
- Esconda sus archivos
- Página de error HTTP 404 personalizada
- El bloqueo de malos referers – No hotlinking
- Bloqueo de Bad bots | Fetchers
- No mostrar ‘www’
- Ocultar extensión del lenguaje de scripting
- Varios Consejos y trucos
- Protección por contraseña con htpasswd
- Habilitación de SSI
- Cambio de página por defecto
- Evite el error 500
- CheckSpelling Directiva
- Añadir MD5
1) Carpetas de control de acceso
Es posible que quieras desactivar totalmente el acceso de una carpeta (por ejemplo, si tienes un directorio con las bibliotecas de programación que se incluyen en los archivos principales: en este caso sólo los archivos principales tendrán acceso a estos archivos, pero nadie de la web debe ser capaz de abrirlo). Bueno, basta con crear un archivo .htaccess en esa carpeta y poner esto en él:
#deny all access
deny from all
Si quieres permitir el acceso desde una dirección IP específica:
#deny all access
deny from all
allow from 10.0.0.1
o de un rango IP específica:
allow from 192.168.0.0/24
también puedes bloquear el acceso un archivo específico:
<Files private.html>
Order allow,deny
Deny from all
</Files>
. / Volver al índice
2) Listado de Carpetas
Si deseas hacer su carpetas navegable, entonces debes añadir esta línea. Htaccess
Options +Indexes +MultiViews +FollowSymlinks
Y si tienes el módulo apropiado instalado en tu servidor web
<ifmodule mod_autoindex.c>
IndexOptions FancyIndexing
</ifmodule>
Es posible que quieras evitar el listado de carpetas
IndexIgnore *
. / Volver al índice
3) Habilitar la compresión
Puedes habilitar la compresión de datos para ahorrar ancho de banda
<ifModule mod_php4.c>
php_value zlib.output_compression 16386
</ifModule>
. / Volver al índice
4) Ocultar los archivos
Para desactivar el acceso a un archivo en particular se puede utilizar una expresión regular y la directiva Files para denegar el acceso a cualquier archivo que comience con .ht Puedes modificarlo para negar un archivo específico (como los archivos de configuración, robots.txt, archivos de registro y todo lo que quieras)
<Files ~ «^\.ht»>
Order allow,deny
Deny from all
Satisfy All
</Files>
. / Volver al índice
5) Personalizado página de error HTTP 404
Si quieres redirigir a sus visitantes cada vez que se captura un error 404 de HTTP, usa este código:
ErrorDocument 404 /errors/notfound.html
Esto redirige al usuario a /errors/notfound.html cuando ocurra un error 404. Por supuesto, puedes redefinir también otros códigos de errores http (403, 500 … y así sucesivamente). Lea a continuación lo que he encontrado aquí !
Consejo: Internet Explorer tiene una «característica» ligeramente documentada que impide el uso de cualquier página de error 404 personalizada que tenga menos de 512 bytes de longitud. Sus visitantes en su lugar serán enviados a la página 404 del propio IE (captura de pantalla), que es genérica y sugiere que utilizan una búsqueda de MSN a «buscar información en Internet.» Esa es una manera de perder visitantes!Asegúrese de que su página de error 404 personalizada está sobre este límite – cerca de 10 líneas completas de texto y HTML deberían ser suficientes.
. / Volver al índice
6) El bloqueo de los malos referers – No hotlinking
Si quieres bloquear algunas partes de su sitio desde cualquier mal uso:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} example\.com [NC,OR]
RewriteCond %{HTTP_REFERER} otherexample\.com
RewriteRule .* – [F]
</ifModule>
De esta forma se bloquea el acceso a nuestra web cuando la pagina de referencia (HTTP_REFERER) sea de example.com o otherexample.com
Para evitar el robo de ancho de banda, también puedes bloquear el acceso a determinados archivos (imágenes, zip, rar, etc)
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?example\.com[NC]
RewriteRule .*\.(zip|mp3|avi|wmv|mpg|mpeg)$ http://www.example.com/images/nohotlink.gif [R,NC,L]
</ifModule>
Esto dice:. «Si el visitante no viene de mywebsite.net, entonces redirigir todas las solicitudes de (zip, mp3, avi, wmv, mpg, mpeg) archivos a una bonita imagen que dice» NO hotlinking AQUÍ «¿ententido? puedes redirigir a una página, o lo que quieras, o puedes modificar la lista de extensiones de archivo para incluir/excluir otros archivos PRECAUCIÓN:. cuando decide bloquear la imagen hotlinking, recuerda que puedes bloquear todo el tráfico fuera del ámbito del dominio por ejemplo, si tienes un feed de FeedBurner tiene que modificar la regla a dejar que se salga de las imágenes … o te verás visto es una situación muy desagradable!
. / Volver al índice
7) El bloqueo de Bad Bots | Fetchers
En algunos casos, es necesario bloquear algunas arañas repugnantes o descargadores de contenido. Entonces tenemos que usar otro mod_rewrite. Por lo general, los robots malos ignoran directiva robots.txt por lo que puedes hacer saltar un error 403 cuando se trate de araña.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto: craftbot@yahoo.com [OR]
RewriteCond %{HTTP_USER_AGENT} ^ChinaClaw [OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [OR]
RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR]
RewriteCond %{HTTP_USER_AGENT} ^eCatch [OR]
RewriteCond %{HTTP_USER_AGENT} ^EirGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^FlashGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb! [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR]
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [OR]
RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR]
RewriteCond %{HTTP_USER_AGENT} ^Grafula [OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Stripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [OR]
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [OR]
RewriteCond %{HTTP_USER_AGENT} ^JOC\ Web\ Spider [OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [OR]
RewriteCond %{HTTP_USER_AGENT} ^LeechFTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown\ tool [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister\ PiX [OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [OR]
RewriteCond %{HTTP_USER_AGENT} ^NearSite [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetAnts [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [OR]
RewriteCond %{HTTP_USER_AGENT} ^NetZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Explorer [OR]
RewriteCond %{HTTP_USER_AGENT} ^Offline\ Navigator [OR]
RewriteCond %{HTTP_USER_AGENT} ^PageGrabber [OR]
RewriteCond %{HTTP_USER_AGENT} ^Papa\ Foto [OR]
RewriteCond %{HTTP_USER_AGENT} ^pavuk [OR]
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [OR]
RewriteCond %{HTTP_USER_AGENT} ^SmartDownload [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Surfbot [OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [OR]
RewriteCond %{HTTP_USER_AGENT} ^Teleport\ Pro [OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebAuto [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebCopier [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebFetch [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebGo\ IS [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebLeacher [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebReaper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebSauger [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ eXtractor [OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ Quester [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebStripper [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebWhacker [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebZIP [OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [OR]
RewriteCond %{HTTP_USER_AGENT} ^WWWOFFLE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Xaldon\ WebSpider [OR]
RewriteCond %{HTTP_USER_AGENT} ^Zeus
RewriteRule .* – [F]
</ifModule>
(Lista tomado de aquí )
. / Volver al índice
8) No mostrar ‘www’
Para ello, puedes usar esta sencilla regla:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{http_host} ^www\.example\.com[nc]
RewriteRule ^(.*)$ http://example.com/$1 [r=301,nc]
</IfModule>
¿Por qué eliminar www? Puedes leerlo aquí .
. / Volver al índice
9)Ocultar la extensión del lenguaje de scripting
Se puede mejorar la seguridad mediante el cambio de extensiones de script para que sus visitantes no sepan qué lenguaje del script se está utilizando:
# Make PHP code look like unknown types
AddType application/x-httpd-php .133t
De esta manera los archivos .133t se tratan como archivos PHP. Puedes cambiar el nombre de los archivos con una nueva extensión.
. / Volver al índice
10) Varios Consejos y trucos
- Mantenga htaccess pequeño:. El archivo es procesado por el servidor web en cada petición (problemas de rendimiento)
- Guarde el archivo .htaccess organizado. Utilice comentarios (Nº de líneas) y mantenerlo lógicamente consistente. Es muy difícil entender un archivo htaccess desordenado.
- Al utilizar reglas de reescritura de URL, agregue el indicador [L] (Last) a las reglas que redirige a los usuarios a la última página (como las reglas hotlinking). Tu sabrás si el servidor no tendrá que procesar ningúna regla más
- Cuidado de la herencia: se aplican htaccess nivel raíz también en carpetas, y cualquier regla htaccess en la carpeta pueden anular las normas iniciales.
. / Volver al índice
11) Protección de contraseña con htpasswd
Esto es útil si quieres agregar protección por contraseña a algunas páginas / carpetas
- Crear un archivo .htpasswd en la carpeta que quieras proteger
- El fichero contendrá datos de acceso en el formulario de usuario: contraseña. Nombre de usuario es en texto plano. La contraseña tiene que estar encriptada o no funcionará! Utiliceesta herramienta para obtener su linea a añadir
- Si crea el archivo en su PC local, asegúrese de cargarlo en el servidor web en modo ASCII
- Ahora se puede modificar el archivo htaccess.. La autenticación se aplicará a la carpeta donde se colocan y sus subcarpetas:
AuthUserFile /home/pathto/.htpasswd
AuthType Basic
AuthName «My Secret Folder»<Limit GET POST>
requerir valid-user
</ LIMIT>
Puedes proteger un solo archivo mediante la colocación de esta en una directiva <Files>. - Asegúrese de proteger el archivo .htaccess consejo #1
. / Volver al índice
12) Habilitación de SSI
Utilice estas instrucciones para habilitar el análisis SSI
AddType text/html .html
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml
. / Volver al índice
13) Cambio de página por defecto
Puedes utilizar estas instrucciones para cambiar la página por defecto (el orden es importante!)
DirectoryIndex home.html index.htm index.html index.php
. / Volver al índice
14) Evite el Error 500
Pasando el juego de caracteres se evita el mostrar un error 500
AddDefaultCharset utf-8
. / Volver al índice
15) Directiva CheckSpelling
Esta directiva puede ser útil para auto-corregir simples errores ortográficos en la URL
<IfModule mod_speling.c>
CheckSpelling On
</IfModule>
. / Volver al índice
16) Agregar MD5
Si no estás preocupado por los problemas de rendimiento, puedes agregar un cálculo hash MD5 para adjuntar una MIC (Message Integrity Check) en cada solicitud. Esto es útil para verificar la integridad del mensaje.
ContentDigest On
. / Volver al índice
1 comentario
Algunas configuraciones de .htaccess para Apache #web | Fernan Díez - fernan.com.es · 1 noviembre 2023 a las 1:31
[…] Enlazando: Configuración htaccess para apacheBlog de sati | Blog de sati. […]