trucos y ejemplos de configuración del archivo htaccess de apache

Upload: oumartoure

Post on 01-Mar-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    1/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 1/8

    Trucos y ejemplos de configuracin del archivo htaccess

    de Apache

    Este artculo recopila los trucos y ejemplos de configuracin ms tiles para el arhivo .htaccessdel

    servidor web Apache.

    Redireccin y reescritura de URL

    Para que funcionen correctamente los ejemplos de configuracin mostrados en esta seccin, debes tener el

    mdulo mod_rewrite instalado y activado en el servidor.

    Forzar a que todas las URL empiecen por www

    Esta configuracin funciona solamente para las URL no seguras que empiezan por http://:

    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^ejemplo\.com [NC]

    RewriteRule ^(.*)$ http://www.ejemplo.com/$1 [L,R=301,NC]

    Esta configuracin funciona tanto para las URL seguras ( https://) como para las URL normales

    (http://):

    RewriteCond %{HTTP_HOST} !^$RewriteCond %{HTTP_HOST} !^www\. [NC]

    RewriteCond %{HTTPS}s ^on(s)|

    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    Forzar a que ninguna URL empiece por www

    Esta configuracin funciona solamente para las URL no seguras que empiezan por http://:

    RewriteEngine onRewriteCond %{HTTP_HOST} ^www\.ejemplo\.com [NC]

    RewriteRule ^(.*)$ http://ejemplo.com/$1 [L,R=301]

    Forzar a que todas las URL sean seguras y empiecen por https

    RewriteEngine on

    RewriteCond %{HTTPS} !on

    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    Forzar a que todas las URL acaben con la barra /

    RewriteCond %{REQUEST_URI} /+[^\.]+$

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    2/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 2/8

    RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

    Redirigir pginas individuales

    Redirect 301 /pagina_antigua.html http://www.ejemplo.com/nueva_pagina.html

    Redirect 301 /pagina_antigua_2.html http://www.ejemplo.com/directorio/

    Redirigir todo un sitio web

    Redirect 301 / http://nuevo_sitio.com/

    A pesar de que esta configuracin sencilla no lo parezca, en realidad se estn redirigiendo todos los

    enlaces viejos al nuevo sitio, no solo la portada del sitio.

    Seguridad

    Impedir cualquier acceso a un sitio web

    La siguiente configuracin impide, sin excepcin, todas las conexiones a tu sitio web, por lo que es una

    forma rpida de "apagarlo" y hacerlo desaparecer de Internet:

    Deny from All

    # en Apache 2.4, utiliza lo siguiente

    # Require all denied

    Impedir cualquier acceso salvo aquellos autorizados

    Order deny, allow

    Deny from All

    Allow from xxx.xxx.xxx.xxx

    # en Apache 2.4, utiliza lo siguiente

    # Require ip xxx.xxx.xxx.xxx

    Sustituye xxx.xxx.xxx.xxxpor la direccin IP desde la que quieres permitir el acceso al sitio. Esta

    configuracin tambin soporta la definicin de rangos de direcciones IP.

    Permitir todos los accesos salvo aquellos desautorizados

    La siguiente configuracin es la contraria de la configuracin mostrada anteriormente, ya que permite el

    acceso desde cualquier direccin IP salvo las indicadas explcitamente:

    Order deny, allow

    Allow from All

    Deny from xxx.xxx.xxx.xxx

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    3/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 3/8

    Deny from xxx.xxx.xxx.yyy

    # en Apache 2.4, utiliza lo siguiente

    # Require not ip xxx.xxx.xxx.xxx

    # Require not ip xxx.xxx.xxx.yyy

    Impedir el acceso a los archivos y directorios ocultos

    Los archivos y directorios ocultos (es decir, aquellos cuyo nombre empieza con un punto) normalmente no

    son pblicos, por lo que el servidor web no debera servirlos:

    RewriteCond %{SCRIPT_FILENAME} d [OR]

    RewriteCond %{SCRIPT_FILENAME} f

    RewriteRule "(^|/)\." [F]

    Entre otros, esta configuracin protege archivos como .htaccess y .htpasswdy directorios como .git y

    .hg.

    Si lo prefieres, tambin puedes devolver un error de tipo 404 (Not Found) para confundir un poco ms a los

    atacantes:

    RedirectMatch 404 /\..*$

    Impedir que se pueda acceder a archivos con contenidos sensibles

    Las siguientes extensiones corresponden a los archivos que pueden contener informacin sensible, como

    por ejemplo: archivos de log con informacin detallada del servidor ( .log), copias de seguridad creadas

    por editores como Vi/Vim ( .swp), comandos de consola ( .sh), archivos de configuracin (.config, .ini),

    etc.

    Order allow,deny

    Deny from all

    Satisfy All

    Impedir que se pueda ver el listado de contenidos de un directorio

    Options All Indexes

    Impedir que otros sitios web enlacen a tus imgenes

    La siguiente configuracin impide que cualquier sitio web externo pueda enlazar a tus imgenes para"robrtelas". Cambia el valor ejemplo.com por tu propio dominio, de manera que solamente tu puedas

    enlazar a tus imgenes:

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    4/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 4/8

    RewriteEngine on

    RewriteCond %{HTTP_REFERER} !^$

    RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?ejemplo.com [NC]

    RewriteRule \.(jpg|jpeg|png|gif)$ [NC,F,L]

    Proteger el acceso a un directorio mediante contrasea

    Primero debes crear un archivo llamado .htpasswdcon el comando htpasswd. Este archivo se debe

    guardar en cualquier directorio que no sea directamente accesible mediante el servidor web:

    $ htpasswd c /home/usuario/.htpasswd nombre_usuario

    Y ahora ya puedes usar este archivo para proteger con contrasea el acceso a cualquier directorio:

    AuthType Basic

    AuthName "Zona Segura"AuthUserFile /home/usuario/.htpasswd

    Require validuser

    Proteger uno o varios archivos mediante contrasea

    AuthName "Zona Segura"

    AuthType Basic

    AuthUserFile /home/usuario/.htpasswd

    Require validuser

    Require validuser

    Mejorar el rendimiento

    Comprimir archivos

    # Forzar compresin tambin para las cabeceras malformadas

    # http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushingbeyondgzipping

    SetEnvIfNoCase ^(AcceptEncodXng|XceptEncoding|X{15}|~{15}|{15})$

    ^((gzip|deflate)\s*,?\s*)+|[X~]{4,13}$ HAVE_AcceptEncoding

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    5/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 5/8

    RequestHeader append AcceptEncoding "gzip,deflate" env=HAVE_Accept

    Encoding

    # Comprimir los contenidos que sean de cualquiera de estos tipos

    AddOutputFilterByType DEFLATE application/atom+xml \

    application/javascript \

    application/json \

    application/rss+xml \

    application/vnd.msfontobject \

    application/xfontttf \

    application/xwebappmanifest+json \

    application/xhtml+xml \

    application/xml \

    font/opentype \

    image/svg+xml \

    image/xicon \

    text/css \

    text/html \

    text/plain \

    text/xcomponent \

    text/xml

    Utilizar la cabecera Expiresde HTTP

    La cabecera Expiresde HTTP indica al navegador la fecha a partir de la cual un recurso se considera "no

    vlido"y debe volver a solicitarse al servidor en vez de servirse directamente desde la cach.

    La recomendacin para muchos de los archivos estticos (CSS, JavaScript, imgenes, etc.) consiste en

    establecer una fecha de expiracin muy lejana (1 ao por ejemplo). No obstante, si los nombres de los

    archivos no incluyen informacin sobre su versin, entonces es mejor que la expiracin no sea tan lejana (1

    semana por ejemplo).

    Utiliza la siguiente configuracin para indicar la fecha de expiracin de todos los archivos estticos

    habituales de las aplicaciones web:

    ExpiresActive on

    ExpiresDefault "access plus 1 month"

    # CSS

    ExpiresByType text/css "access plus 1 year"

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    6/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 6/8

    # Archivos relacionados con AJAX y Web Sockets

    ExpiresByType application/json "access plus 0 seconds"

    ExpiresByType application/xml "access plus 0 seconds"

    ExpiresByType text/xml "access plus 0 seconds"

    # Favicon

    ExpiresByType image/xicon "access plus 1 week"

    # Componentes HTML (HTCs)

    ExpiresByType text/xcomponent "access plus 1 month"

    # HTML

    ExpiresByType text/html "access plus 0 seconds"

    # JavaScript

    ExpiresByType application/javascript "access plus 1 year"

    # Manifest

    ExpiresByType application/xwebappmanifest+json "access plus 0 seconds"

    ExpiresByType text/cachemanifest "access plus 0 seconds"

    # Fotos, vdeos y audio

    ExpiresByType audio/ogg "access plus 1 month"

    ExpiresByType image/gif "access plus 1 month"

    ExpiresByType image/jpeg "access plus 1 month"

    ExpiresByType image/png "access plus 1 month"

    ExpiresByType video/mp4 "access plus 1 month"

    ExpiresByType video/ogg "access plus 1 month"

    ExpiresByType video/webm "access plus 1 month"

    # Canales RSS y Atom

    ExpiresByType application/atom+xml "access plus 1 hour"

    ExpiresByType application/rss+xml "access plus 1 hour"

    # Fuentes web

    ExpiresByType application/fontwoff "access plus 1 month"

    ExpiresByType application/vnd.msfontobject "access plus 1 month"

    ExpiresByType application/xfontttf "access plus 1 month"

    ExpiresByType font/opentype "access plus 1 month"

    ExpiresByType image/svg+xml "access plus 1 month"

    Desactivar la cabecera ETagde HTTP

    Eliminar la cabecera ETagde HTTP puede ser til en algunas situaciones, ya que impide a los proxys y a

    los navegadores cachear los contenidos en funcin de esta cabecera. En la prctica, esto fuerza a que los

  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    7/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 7/8

    proxys y navegadores utilicen en su lugar las cabeceras CacheControl o Expires:

    Header unset ETag

    FileETag None

    Otros trucos

    Definir opciones de configuracin PHP

    Utiliza la directiva especial php_valuey a continuacin, indica el nombre de la opcin y su valor separado

    por un espacio:

    php_value

    Este ejemplo define el tiempo mximo de ejecucin de los scripts PHP y el tamao mximo de los archivos

    que se pueden subir:

    # For example:

    php_value upload_max_filesize 30M

    php_value max_execution_time 600

    Pginas de error personalizadas

    ErrorDocument 400 /errores/error400.html

    ErrorDocument 401 /errores/error401.html

    ErrorDocument 403 /errores/error403.html

    ErrorDocument 404 /errores/error404.html

    ErrorDocument 500 /errores/error500.html

    Forzar a que el navegador baje un archivo en vez de mostrarlo

    La siguiente configuracin hace que todos los archivos de tipo Markdown (extensin .md) se descarguen

    en vez de mostrarse dentro del navegador. Cambia la extensin .mdpor la extensin de los archivos que

    quieres forzar que se descarguen:

    ForceType application/octetstream

    Header set ContentDisposition attachment

    Permitir la carga de fuentes desde diferentes dominios

    Debido a las restricciones del Cross-origin Resource Sharing, es posible que algunas fuentes servidas a

    travs de una CDN no funcionen en Firefox o Internet Explorer. Para solucionarlo, utiliza la siguiente

    https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
  • 7/25/2019 Trucos y Ejemplos de Configuracin Del Archivo Htaccess de Apache

    8/8

    16/6/2016 Tr ucos y ej em pl os de confi gur aci n del ar chi vo htaccess de Apache

    http://l ibr osw eb.es/tutor ial /tr ucos- y- ej em pl os- de- confi gur aci on- del -ar chi vo- htaccess- de- apache/ 8/8

    configuracin:

    Header set AccessControlAllowOrigin "*"

    Forzar el uso de la codificacin UTF-8

    # Servir contenidos de tipo text/plain o text/html usando la codificacin UTF8

    AddDefaultCharset utf8

    # Forzar la codificacin UTF8 en varios tipos de archivos

    AddCharset utf8 .atom .css .js .json .rss .vtt .xml