Вы находитесь на странице: 1из 8

16/6/2016

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

Вам также может понравиться