Академический Документы
Профессиональный Документы
Культура Документы
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
Trucosyejemplosdeconfiguracindelarchivohtaccess
deApache
Esteartculorecopilalostrucosyejemplosdeconfiguracinmstilesparaelarhivo.htaccessdel
servidorwebApache.
RedireccinyreescrituradeURL
Paraquefuncionencorrectamentelosejemplosdeconfiguracinmostradosenestaseccin,debestenerel
mdulomod_rewriteinstaladoyactivadoenelservidor.
ForzaraquetodaslasURLempiecenporwww
EstaconfiguracinfuncionasolamenteparalasURLnosegurasqueempiezanporhttp://:
RewriteEngineon
RewriteCond%{HTTP_HOST}^ejemplo\.com[NC]
RewriteRule^(.*)$http://www.ejemplo.com/$1[L,R=301,NC]
EstaconfiguracinfuncionatantoparalasURLseguras(https://)comoparalasURLnormales
(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]
ForzaraqueningunaURLempieceporwww
EstaconfiguracinfuncionasolamenteparalasURLnosegurasqueempiezanporhttp://:
RewriteEngineon
RewriteCond%{HTTP_HOST}^www\.ejemplo\.com[NC]
RewriteRule^(.*)$http://ejemplo.com/$1[L,R=301]
ForzaraquetodaslasURLseansegurasyempiecenporhttps
RewriteEngineon
RewriteCond%{HTTPS}!on
RewriteRule(.*)https://%{HTTP_HOST}%{REQUEST_URI}
ForzaraquetodaslasURLacabenconlabarra/
RewriteCond%{REQUEST_URI}/+[^\.]+$
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
1/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
RewriteRule^(.+[^/])$%{REQUEST_URI}/[R=301,L]
Redirigirpginasindividuales
Redirect301/pagina_antigua.htmlhttp://www.ejemplo.com/nueva_pagina.html
Redirect301/pagina_antigua_2.htmlhttp://www.ejemplo.com/directorio/
Redirigirtodounsitioweb
Redirect301/http://nuevo_sitio.com/
Apesardequeestaconfiguracinsencillanoloparezca,enrealidadseestnredirigiendotodoslos
enlacesviejosalnuevositio,nosololaportadadelsitio.
Seguridad
Impedircualquieraccesoaunsitioweb
Lasiguienteconfiguracinimpide,sinexcepcin,todaslasconexionesatusitioweb,porloqueesuna
formarpidade"apagarlo"yhacerlodesaparecerdeInternet:
DenyfromAll
#enApache2.4,utilizalosiguiente
#Requirealldenied
Impedircualquieraccesosalvoaquellosautorizados
Orderdeny,allow
DenyfromAll
Allowfromxxx.xxx.xxx.xxx
#enApache2.4,utilizalosiguiente
#Requireipxxx.xxx.xxx.xxx
Sustituyexxx.xxx.xxx.xxxporladireccinIPdesdelaquequierespermitirelaccesoalsitio.Esta
configuracintambinsoportaladefinicinderangosdedireccionesIP.
Permitirtodoslosaccesossalvoaquellosdesautorizados
Lasiguienteconfiguracineslacontrariadelaconfiguracinmostradaanteriormente,yaquepermiteel
accesodesdecualquierdireccinIPsalvolasindicadasexplcitamente:
Orderdeny,allow
AllowfromAll
Denyfromxxx.xxx.xxx.xxx
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
2/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
Denyfromxxx.xxx.xxx.yyy
#enApache2.4,utilizalosiguiente
#Requirenotipxxx.xxx.xxx.xxx
#Requirenotipxxx.xxx.xxx.yyy
Impedirelaccesoalosarchivosydirectoriosocultos
Losarchivosydirectoriosocultos(esdecir,aquelloscuyonombreempiezaconunpunto)normalmenteno
sonpblicos,porloqueelservidorwebnodeberaservirlos:
RewriteCond%{SCRIPT_FILENAME}d[OR]
RewriteCond%{SCRIPT_FILENAME}f
RewriteRule"(^|/)\."[F]
Entreotros,estaconfiguracinprotegearchivoscomo.htaccessy.htpasswdydirectorioscomo.gity
.hg.
Siloprefieres,tambinpuedesdevolverunerrordetipo404(NotFound)paraconfundirunpocomsalos
atacantes:
RedirectMatch404/\..*$
Impedirquesepuedaaccederaarchivosconcontenidossensibles
Lassiguientesextensionescorrespondenalosarchivosquepuedencontenerinformacinsensible,como
porejemplo:archivosdelogconinformacindetalladadelservidor(.log),copiasdeseguridadcreadas
poreditorescomoVi/Vim(.swp),comandosdeconsola(.sh),archivosdeconfiguracin(.config,.ini),
etc.
<FilesMatch"(\.(bak|config|dist|fla|inc|ini|log|psd|sh|sql|swp)|~)$">
Orderallow,deny
Denyfromall
SatisfyAll
</FilesMatch>
Impedirquesepuedaverellistadodecontenidosdeundirectorio
OptionsAllIndexes
Impedirqueotrossitioswebenlacenatusimgenes
Lasiguienteconfiguracinimpidequecualquiersitiowebexternopuedaenlazaratusimgenespara
"robrtelas".Cambiaelvalorejemplo.comportupropiodominio,demaneraquesolamentetupuedas
enlazaratusimgenes:
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
3/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
RewriteEngineon
RewriteCond%{HTTP_REFERER}!^$
RewriteCond%{HTTP_REFERER}!^http(s)?://(www\.)?ejemplo.com[NC]
RewriteRule\.(jpg|jpeg|png|gif)$[NC,F,L]
Protegerelaccesoaundirectoriomediantecontrasea
Primerodebescrearunarchivollamado.htpasswdconelcomandohtpasswd.Estearchivosedebe
guardarencualquierdirectorioquenoseadirectamenteaccesiblemedianteelservidorweb:
$htpasswdc/home/usuario/.htpasswdnombre_usuario
Yahorayapuedesusarestearchivoparaprotegerconcontraseaelaccesoacualquierdirectorio:
AuthTypeBasic
AuthName"ZonaSegura"
AuthUserFile/home/usuario/.htpasswd
Requirevaliduser
Protegerunoovariosarchivosmediantecontrasea
AuthName"ZonaSegura"
AuthTypeBasic
AuthUserFile/home/usuario/.htpasswd
<Files"archivo_secreto.zip">
Requirevaliduser
</Files>
<FilesMatch^(factura\d+\.pdf)$>
Requirevaliduser
</FilesMatch>
Mejorarelrendimiento
Comprimirarchivos
<IfModulemod_deflate.c>
#Forzarcompresintambinparalascabecerasmalformadas
#http://developer.yahoo.com/blogs/ydn/posts/2010/12/pushingbeyondgzipping
<IfModulemod_setenvif.c>
<IfModulemod_headers.c>
SetEnvIfNoCase^(AcceptEncodXng|XceptEncoding|X{15}|~{15}|{15})$
^((gzip|deflate)\s*,?\s*)+|[X~]{4,13}$HAVE_AcceptEncoding
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
4/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
RequestHeaderappendAcceptEncoding"gzip,deflate"env=HAVE_Accept
Encoding
</IfModule>
</IfModule>
#Comprimirloscontenidosqueseandecualquieradeestostipos
<IfModulemod_filter.c>
AddOutputFilterByTypeDEFLATEapplication/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
</IfModule>
</IfModule>
UtilizarlacabeceraExpiresdeHTTP
LacabeceraExpiresdeHTTPindicaalnavegadorlafechaapartirdelacualunrecursoseconsidera"no
vlido"ydebevolverasolicitarsealservidorenvezdeservirsedirectamentedesdelacach.
Larecomendacinparamuchosdelosarchivosestticos(CSS,JavaScript,imgenes,etc.)consisteen
establecerunafechadeexpiracinmuylejana(1aoporejemplo).Noobstante,silosnombresdelos
archivosnoincluyeninformacinsobresuversin,entoncesesmejorquelaexpiracinnoseatanlejana(1
semanaporejemplo).
Utilizalasiguienteconfiguracinparaindicarlafechadeexpiracindetodoslosarchivosestticos
habitualesdelasaplicacionesweb:
<IfModulemod_expires.c>
ExpiresActiveon
ExpiresDefault"accessplus1month"
#CSS
ExpiresByTypetext/css"accessplus1year"
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
5/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
#ArchivosrelacionadosconAJAXyWebSockets
ExpiresByTypeapplication/json"accessplus0seconds"
ExpiresByTypeapplication/xml"accessplus0seconds"
ExpiresByTypetext/xml"accessplus0seconds"
#Favicon
ExpiresByTypeimage/xicon"accessplus1week"
#ComponentesHTML(HTCs)
ExpiresByTypetext/xcomponent"accessplus1month"
#HTML
ExpiresByTypetext/html"accessplus0seconds"
#JavaScript
ExpiresByTypeapplication/javascript"accessplus1year"
#Manifest
ExpiresByTypeapplication/xwebappmanifest+json"accessplus0seconds"
ExpiresByTypetext/cachemanifest"accessplus0seconds"
#Fotos,vdeosyaudio
ExpiresByTypeaudio/ogg"accessplus1month"
ExpiresByTypeimage/gif"accessplus1month"
ExpiresByTypeimage/jpeg"accessplus1month"
ExpiresByTypeimage/png"accessplus1month"
ExpiresByTypevideo/mp4"accessplus1month"
ExpiresByTypevideo/ogg"accessplus1month"
ExpiresByTypevideo/webm"accessplus1month"
#CanalesRSSyAtom
ExpiresByTypeapplication/atom+xml"accessplus1hour"
ExpiresByTypeapplication/rss+xml"accessplus1hour"
#Fuentesweb
ExpiresByTypeapplication/fontwoff"accessplus1month"
ExpiresByTypeapplication/vnd.msfontobject"accessplus1month"
ExpiresByTypeapplication/xfontttf"accessplus1month"
ExpiresByTypefont/opentype"accessplus1month"
ExpiresByTypeimage/svg+xml"accessplus1month"
</IfModule>
DesactivarlacabeceraETagdeHTTP
EliminarlacabeceraETagdeHTTPpuedesertilenalgunassituaciones,yaqueimpidealosproxysya
losnavegadorescachearloscontenidosenfuncindeestacabecera.Enlaprctica,estofuerzaaquelos
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
6/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
proxysynavegadoresutilicenensulugarlascabecerasCacheControloExpires:
<IfModulemod_headers.c>
HeaderunsetETag
</IfModule>
FileETagNone
Otrostrucos
DefiniropcionesdeconfiguracinPHP
Utilizaladirectivaespecialphp_valueyacontinuacin,indicaelnombredelaopcinysuvalorseparado
porunespacio:
php_value<nombreopcion><valoropcion>
EsteejemplodefineeltiempomximodeejecucindelosscriptsPHPyeltamaomximodelosarchivos
quesepuedensubir:
#Forexample:
php_valueupload_max_filesize30M
php_valuemax_execution_time600
Pginasdeerrorpersonalizadas
ErrorDocument400/errores/error400.html
ErrorDocument401/errores/error401.html
ErrorDocument403/errores/error403.html
ErrorDocument404/errores/error404.html
ErrorDocument500/errores/error500.html
Forzaraqueelnavegadorbajeunarchivoenvezdemostrarlo
LasiguienteconfiguracinhacequetodoslosarchivosdetipoMarkdown(extensin.md)sedescarguen
envezdemostrarsedentrodelnavegador.Cambialaextensin.mdporlaextensindelosarchivosque
quieresforzarquesedescarguen:
<Files*.md>
ForceTypeapplication/octetstream
HeadersetContentDispositionattachment
</Files>
Permitirlacargadefuentesdesdediferentesdominios
DebidoalasrestriccionesdelCrossoriginResourceSharing,esposiblequealgunasfuentesservidasa
travsdeunaCDNnofuncionenenFirefoxoInternetExplorer.Parasolucionarlo,utilizalasiguiente
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
7/8
16/6/2016
TrucosyejemplosdeconfiguracindelarchivohtaccessdeApache
configuracin:
<IfModulemod_headers.c>
<FilesMatch"\.(eot|otf|ttc|ttf|woff)$">
HeadersetAccessControlAllowOrigin"*"
</FilesMatch>
</IfModule>
ForzarelusodelacodificacinUTF8
#Servircontenidosdetipotext/plainotext/htmlusandolacodificacinUTF8
AddDefaultCharsetutf8
#ForzarlacodificacinUTF8envariostiposdearchivos
AddCharsetutf8.atom.css.js.json.rss.vtt.xml
http://librosweb.es/tutorial/trucosyejemplosdeconfiguraciondelarchivohtaccessdeapache/
8/8