Configuración htaccess para apache

Publicado por sati en

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

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

No se han encontrado entradas similares.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *