archivo oculto de sistema htaccess.pdf

Upload: nwing23

Post on 06-Jul-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    1/22

    l archivo oculto de sistema . ht access, aún no siendo parte de WordPress, tiene multitud de funcionalidades realmenútiles para cualquier web, así que más valeconocerlo y familiarizarnos con él. Así que vamos a ver qué es, cómofunciona, y aprender algunos trucos útiles, algunos poco conocidos, que podemos usar para nuestra instalación deWordPress.

    1. ¿Qué es el archivo .htaccess?

    l software de servidor Apache, sobre el que funciona la mayoría de la Web, ofrece configuración de directorios a travde los archivos de Acceso a Hipertexto, Hypertext Access en inglés, más conocidos como archivos .htaccess para que hagas una idea de donde viene el nombrecito del archivo.

    stos archivos .htaccess permiten ajustes personalizados y específicos para cada sitio de directivas de configuración deistema, definidas en el archivo de configuración principal de Apache (httpd.conf).

    stas directivas personalizadas pueden operar dentro de un archivo denominado .htaccess. Para ello el usuario debeconceder al fichero .htaccess los permisos de archivo adecuados de acceso y/o edición. Ya puestos, a este respecto tomnota que jamás debes dar permisos de escritura para todos al archivo .htaccess, lo más habitual y seguro es conceder permisos 644, que permite acceso universal de lectura y permiso de escritura solo al usuario del sistema.

    ambién debes saber que las reglas – o directivas – de .htaccess afectan al directorio superior y todos los subdirectoriodonde esté situado. Así que para que se apliquen sus configuraciones a toda una web debes colocar el archivo .htaccesa carpeta raíz de sitio.

    Además, también puedes crear archivos .htaccess en un directorio o subdirectorio concreto para que sus reglas se apliqolo al mismo.

    2. Notas importantes para novatos con .htaccess

    Al ser un archivo de configuración, .htaccess es realmente potente, y en consecuencia peligroso si no se usa bien. Hastmás ligero error de sintaxis, como un espacio de sobra, puede provocar un funcionamiento desastroso en el servidor. Aque es importante que hagas siempre copia de cualquier archivo y carpeta relevante de tu web, incluidos los ficheroshtaccess originales, antes de meterte a enredar con archivos de Acceso a Hipertexto.

    ambién es importante comprobar que todo funciona bien en tu web después de hacer cualquier cambio en el fichero

    https://perishablepress.com/stupid-htaccess-tricks/https://perishablepress.com/stupid-htaccess-tricks/

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    2/22

    htaccess, por pequeño o irrelevante que te parezca. Si encuentras algún error deshaz los cambios o recupera la copiaguardada antes de hacerlos para así devolver tu web a su funcionamiento normal.

    3. Ojo con el rendimiento

    as directivas de .htaccess ofrecen configuraciones de directorio sin necesidad de acceder al archivo principal deconfiguración de Apache (httpd.conf). Sin embargo, por cuestiones de rendimiento y seguridad, siempre que sea posibe debe utilizar siempre el archivo principal de configuración para las directivas del servidor.

    or ejemplo, cuando un servidor está configurado para procesar directivas de .htaccess, Apache debe buscar en cadadirectorio del dominio y cargar todos y cada uno de los archivos .htaccess en cada petición de documentos. Esto provoun incremento en el tiempo de procesamiento de la página y, en consecuencia, perjudica el rendimiento.

    ara sitios con poco tráfico este tipo de fallos de rendimiento pueden ser inapreciables, pero se puede convertir en un sproblema en webs de alto tráfico.

    Así que, como regla de oro, solo debes usar archivos .htaccess cuando no tengas acceso al archivo de configuraciónprincipal del servidor, o sea, al archivo httpd.conf.

    4. Expresiones regulares (regex) disponibles en .htaccess

    Una # le dice al servidor que ignore la línea, que no la ejecute. Se usa para incluir comentarios. Debes tener clar que cada línea de comentarios requiere su propio carácter # así que si quieres añadir mucho texto recuerda pone una # al principio de cada línea. Suele ser recomendable usar solo letras, números, guiones y guiones bajos, par evitar posibles errores de llamadas no deseadas al servidor.Ejemplo:# est o es un coment ar i o# cada l í nea debe tener su pr opi a al mohadi l l a# ut i l i za sol o car act er es al f anuméri cos, gui ones ( - ) o gui ones baj os ( _)

    F]Forbidden (prohibido): le dice al servidor que devuelva al cliente un 403 Forbi dden.

    L]Last rule (última regla): le dice al servidor que deje de hacer rewrite una vez se procese la directiva anterior.

    N] Next (siguiente): le dice a Apache que vuelva a ejecutar el rewrite hasta que todas las directivas de rewrite se ha ejecutado.

    G]

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    3/22

    Gone (ido): le dice al servidor que entregue el mensaje de estadoGone ( no l onger exi st s) .P]

    Proxy: le dice al servidor que gestione las peticiones mediantemod_pr oxyC]

    Chain (cadena): le dice al servidor que encadene la regla actual con la anterior.R]

    Redirect (redirigir): le dice a Apache que lance una redirección, haciendo que el navegador muestre la URL re-escrita/modificada.

    NC] No Case: define cualquier argumento al que esté asociado como no afectado por mayúsculas-minúsculas, o sea,

     como case-insensitive, “NC” = “No Case”.PT]Pass Through (pasar a través): le dice a mod_r ewr i t e que pase la URL re-escrita de nuevo a Apache para que la procese de nuevo.

    OR]Or (o): especifica una lógica “o” que enlaza dos expresiones para que si una u otra se cumple se aplique la regla asociada a la misma.

    NE] No Escape: le dice al servidor que redistribuya la salida sin escapar caracteres.

    NS] No Subrequest (sin petición subyacente): le dice al servidor que se salte la directiva si hay peticiones internas subyacentes.

    QSA]Append Query String: insta al servidor a que añada una cadena de petición al final de la expresión (URL).

    S=x]Skip (saltar): le dice al servidor que se salte las siguientes “x” reglas si encuentra alguna coincidencia..

    E=var i abl e: val ue]Environmental Variable (variable del entorno): le dice al servidor que establezca la variable del entorno (“variable”) al valor definido (“value”).

    T=MI ME- t ype]Mime Type: declara el tipo mime del recurso al que está dirigido.

    ]especifica una clase de carácter, por el que cualquier carácter dentro de los corchetes se considerará una coincidencia, por ejemplo en [xyz], con x, y o z.

    ] +clase de carácter en el que cualquier combinación de elementos dentro de los corchetes se considera una coincidencia; por ejemplo [zyz]+ considerará una coincidencia cualquier número de equis, y griegas o zetas, o

     cualquier combinación de estos caracteres.]̂

    especifica que no está dentro de una clase de carácter; por ejemplo, [^xyz] considerará una coincidencia cualqui carácter que no sea ni x, ni y, ni z.

    a-z]un guión (-) entre dos caracteres dentro de corchetes ([]) define un rango de caracteres; por ejemplo [a-zA-Z] se refiere a todas las letras en mayúsculas y minúsculas de la a a la z.

    {n}especifica un número exacto (n)  del carácter precedente; por ejemplo x{3} se refiere exactamente a tresx.

    {n, }especifica un número no o más del carácter precedente; por ejemplo x{3,} se refiere a tres x o más.

    {n, m}especifica un rango de números, entre n y m, del carácter precedente; por ejemplo x{3,7} se refiere a tres, cuatro

     cinco, seis o siete x.)se utiliza para agrupar juntos un grupo de caracteres, considerándolos como una sola unidad; por ejemplo (ayudawordpress se referirá a wordpress, ya sea con o sin el prefijo ayuda.

    indica el comienzo de una cadena de prueba de una expresión regular (regex); por ejemplo, empezar el argumen con el carácter anterior.

    indica el fin de una cadena de prueba de una expresión regular; por ejemplo, terminar el argumento con el carác anterior.

    declara opcional el carácter precedente; por ejemplocachopo? valdrá para cachopo y cachopos, mientras que cachopo( s ) ? se referirá tanto a cachopo como a cachopos; por ejemplox? se refiere a ninguna o una x.

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    4/22

    declara negación; ejemplo “! cadena” valdrá para todo menos para “cadena”.

    un punto (o periodo) indica cualquier carácter arbitrario simple.

    indica que “no se” haga rewrite de la URL, como en “. . . domi ni o. es . * - [ F] ”.

    se refiere a uno o más caracteres del carácter precedente; por ejemplo,G+se refiere a una o más Gs, mientras que simplemente “+” vale para uno o varios caracteres de cualquier tipo.

    se refiere a cero o más de los caracteres precedentes; por ejemplo, puedes usar “. *” como comodín.

    declara un operador lógico “or”; por ejemplo, ( x| y)  vale para x o y.

    escapa caracteres especiales (^ $ ! . * |  ); por ejemplo, usa “\ . ” para indicar/escapar un punto literalmente..

    indica un punto literal (escapado).*

    cero o más barras.*

    cero o más caracteres arbitrarios.$

    define una cadena vacía.. *$

    el patrón estándar para que valga cualquier cadena./̂ . ]

    define un carácter que no es ni una barra ni un punto./̂ . ]+

    define cualquiera números o caracteres que no contengan ni barra ni punto.t tp : / /

    esta es una declaración literal — en este caso la cadena de caracteres literal “http://”.domai n. *

    define una cadena que comienza con el término “domai n”, probablemente precedido por cualquier número de caracteres.

    domai n\ . com$define la cadena exacta “domai n. com”.

    dcomprueba si la cadena es un directorio existente.

    f  comprueba si la cadena es un archivo existente.s

    comprueba si el archivo de la cadena contiene un valor que no sea cero.

    Códigos de redirección de cabecera

    301 – movido permanentemente302 – movido temporalmente403 – prohibido404 – no encontrado410 – ido

    5. Directivas básicas de .htaccess

    Activar el rewrite básico

    Hay servidores que no tiene el “mod_r ewr i t e” activo por defecto. Para que esté activo mod_r ewr i t e (rewrite básico) eitio añade la siguiente línea una vez en el archivo .htaccess de la carpeta raíz de tu web:

    act i var r ewr i t e bási coewr i t eEngi ne on

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    5/22

    Activar enlaces simbólicos

    Activa los enlaces simbólicos (symlinks) añadiendo la siguiente directiva en el archivo .htaccess en el que los quieras tdisponibles. Ten en cuenta que para que funcione la directiva Fol l owSymLi nks deben estar activados losprivilegios Al l owOver r i de Opt i ons en el archivo de configuración del servidor:

    act i var enl aces si mból i cospt i ons +Fol l owSymLi nks

    Activar AllowOverrideara que funcionen las directivas que requieren Al l owOver r i de, como Fol l owSymLi nks, debe añadirse la siguiente

    directiva al archivo de configuración del servidor. Por cuestiones de rendimiento es importanteactivar Al l owOver r i de solamente en el directorio o directorios concretos en los que sea necesaria. En el siguiente ejemde código se activan privilegios de Al l owOver r i de solo en un directorio concreto/www/remplaza/esto/con/el/directorio/real). :

    acti va pr i vi l egi os de al l owover r i deDi r ect ory / www/ r empl aza/ est o/ con/ el / di r ect or i o/ r eal >l l owOver r i de Opt i ons/ Di r ect or y>

    Renombrar el archivo .htaccessNo todos los sistemas permiten el formato de solo extensión de los archivos .htaccess. Afortunadamente puedes

    enombrarlo a lo que quieras, mientras el nombre sea válido en tu sistema. Esta directiva debe colocarse en el archivoconfiguración del servidor o no funcionará:

    r enombrar l os archi vosccessFi l eName ht . access

    Nota: Si renombras los archivos .htaccess recuerda que debes actualizar cualquier ajuste asociado a los nombres previPor ejemplo, si estás protegiendo tu archivo .htaccess conFi l esMatch, recuerda informarle de los nuevos nombres:

    prot eger archi vos htaccess r enombrados

    Fi l esMatch " ĥt \ . ">r der deny, al l oweny f r omal l/ Fi l esMatch>

    Aprovecha las reglas definidas en httpd.conf 

    uedes ahorrar tiempo, esfuerzo, y sobre todo recursos, definiendo reglas repetidas para varios alojamientos virtuales oolo para uno a través del archivo httpd.conf. Luego solo tienes que indicar a los archivos .htaccess afectados que hereas reglas de httpd.conf incluyendo esta directiva:

    ewr i t eOpt i ons I nher i t

    6. Mejora el rendimiento de tu web con .htaccess

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    6/22

    Uno de los usos más habituales, y agradecidos, de las directivas de .htaccess es el de mejorar el rendimiento de una weasí que vamos a empezar por ahí.

    Mejora el rendimiento con AllowOverride

    Recuerda antes de nada que puedes limitar bajadas de rendimiento activando Al l owOver r i de solo en los directorios enque sea necesaria. Un ejemplo que verás muy claro es que si activasAl l owOver r i de en todo tu sitio el servidor debeevisar cada directorio, buscando archivos .htaccess que puede que ni existan. Para evitarlo debemos

    desactivar Al l owOver r i de en el fichero .htaccess de la carpeta raíz del sitio y luego activarlo solo en los directorios dea necesaria desde el archivo de configuración del servidor. Si no tuvieses acceso a este archivo de configuración delervidor y necesitas privilegios de Al l owOver r i de no uses esta directiva:

    mej orar r endi mi ent o desact i vando al l ow overr i del l owOverr i de None

    ndicando el conjunto de caracteresodemos evitar errores 500 indicando el parámetro del conjunto de caracteres por defecto antes de cargarlos. Por supuemplaza el “utf-8” del ejemplo si usas otro conjunto de caracteres en tu web:

    i ndi camos el conj unto de caracteres por def ect oddDef aul t Charset ut f - 8

    Ahorrando ancho de banda

    ara aumentar el rendimiento en servidores con PHP activo (o sea, todos en los que tengas un WordPress) añade laiguiente directiva:

    ahor r a ancho de banda en servi dor es con PHP act i voi f modul e mod_php4. c>hp_val ue zl i b. out put _compr essi on 16386/ i f modul e>

    Desactivando la firma del servidor

    n esta ocasión desactivamos la firma del servidor que podría identificarlo:

    desact i va l a f i r ma del ser vi dorerverSi gnatur e Of f 

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    7/22

    Estableciendo la zona horaria del servidor

    on esta directiva le indicamos al servidor que se sincronice cronológicamente de acuerdo a la zona horaria de laocalización que le indicamos:

    est abl ecemos l a zona horar i a del servi doret Env TZ Spai n/ Madr i d

    Estableciendo la dirección de email del administrador del servidor

    Aquí especificamos al dirección de correo por defecto del administrador del servidor:

    establ ecemos el emai l del admi ni st r ador del servi doret Env SERVER_ADMI N admi n@domi ni o. es

    Mejora la velocidad de transferencia activando la cache de archivos

    odemos mejorar enormemente la velocidad de transferencia de nuestro sitio activando la cache de archivos. Usaremoiempo en segundos para indicar la duración del contenido en cache:

    cache de i mágenes y conteni do f l ash un mesFi l esMat ch ". ( f l v| gi f | j pg| j peg| png| i co| swf ) $">

    eader set Cache- Cont r ol "max- age=2592000"/ Fi l esMatch>

    cache de text o, css, y ar chi vos j avascr i pt una semanaFi l esMat ch ". ( j s| css| pdf | t xt ) $">eader set Cache- Cont r ol "max- age=604800"/ Fi l esMatch>

    cache de ar chi vos ht ml htm un dí aFi l esMatch " . ( ht ml | ht m) $">eader set Cache- Cont r ol "max- age=43200"/ Fi l esMatch>

    usamos est o para act i var cache mí ni ma dur ant e tareas de desarr ol l o en el si t i oFi l esMat ch "\ . ( f l v| gi f | j pg| j peg| png| i co| j s | css| pdf | swf | ht ml | ht m| t xt ) $">eader set Cache- Cont r ol "max- age=5"/ Fi l esMatch>

    desact i vamos l a cache para scr i pt s y archi vos di námi cos concr etosFi l esMat ch "\ . ( pl | php| cgi | spl | scgi | f cgi ) $">eader unset Cache- Cont r ol/ Fi l esMatch>

    mét odo al t ernat i vo par a cache de archi vosxpi r esAct i ve Onxpi r esDef aul t A604800 # 1 weekxpi r esByType i mage/ x- i con A2419200 # 1 monthxpi r esByType appl i cat i on/ x- j avascr i pt A2419200 # 1 mont hxpi r esByType t ext / css A2419200 # 1 mont hxpi r esByType t ext / ht ml A300 # 5 mi nut es di sabl e cachi ng f or scr i pt s and other dynami c f i l esFi l esMat ch "\ . ( pl | php| cgi | spl | scgi | f cgi ) $">xpi r esAct i ve Of f 

    / Fi l esMatch>

    onversión de intervalos comunes de tiempo en segundos:

    300 = 5 minutos2700 = 45 minutos3600 = 1 hora54000 = 15 horas86400 = 1 día518400 = 6 días604800 = 1 semana1814400 = 3 semanas

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    8/22

    2419200 = 1 mes26611200 = 11 meses29030400 = 1 año = no expira nunca

    Estableciendo el idioma por defecto

    ste es un modo sencillo de establecer el idioma por defecto para las páginas que sirvas en tu alojamiento:

    establ ece el i di oma por def ect oef aul t Language es- ES

    Declarando tipos MIME específicos/adicionales

    añade var i os t i pos mi meddType appl i cati on/ x- shockwave- f l ash . swf ddType vi deo/ x- f l v . f l vddType i mage/ x- i con . i co

    Enviando el conjunto de caracteres y otras cabeceras sin meta tags

    enví a l a tag de i di oma y j uego de car act eres por def ect o AddType ' t ext / html ; char set =UTF- 8' htmlddDef aul t Charset UTF- 8

    ef aul t Language es- ES

    Limitando métodos de petición GET y PUT al servidor

    l i mi t a métodos GET y PUT de pet i ci ones al servi dorpt i ons - ExecCGI - I ndexes - Al lewr i t eEngi ne onewr i t eCond %{REQUEST_METHOD} (̂ TRACE| TRACK| OPTI ONS| HEAD) Rewr i t eRul e . * - [ F]

    Procesando archivos selectivamente según el método de petición

    pr ocesar archi vos según el método de pet i ci ón al servi dorcri pt PUT / cgi - bi n/ upl oad. cgicr i pt GET / cgi - bi n/ downl oad. cgi

    Ejecutando varios tipos de archivo mediante un script cgi

    n aquellas situaciones especiales en las que necesitemos procesar varios tipos de archivo con algún script cgi específmejor definirlo:

    ej ecut ar t odos l os ar chi vos png medi ant e png- scr i pt . cgicti on i mage/ png / cgi - bi n/ png- scri pt . cgi

    7. Mejora la seguridad de tu web con .htaccess

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    9/22

    Otro de los usos más comunes de .htaccess es para aumentar la seguridad de una web, y disponemos de un buen montórucos para lograrlo.

    Evita acceso a .htaccess

    Añade el código siguiente a tu fichero .htaccess para añadir una capa extra de seguridad. Lo que consigue es que cualqntento de acceso al fichero .htaccess resulte en un mensaje de error 403. No olvides, no obstante, que nuestra primera

    capa de defensa es proteger los archivos .htaccess cambiando los permisos a 644 con CHMOD, como hemos visto ant

    asegurando el archi vo htaccessFi l es . ht access>rder al l ow, denyeny f r om al l/ Fi l es>

    Evita el acceso a un archivo concretoodemos aplicar la misma directiva a cualquier otro archivo que queramos proteger, como el fichero “contabilidad.pdf

    ejemplo siguiente:

    evi t ar l a vi sual i zl aci ón de un ar chi vo concret of i l es cont abi l i dad. pdf >rder al l ow, denyeny f r om al l/ f i l es>

    Evita el acceso a varios archivos

    ara evitar el acceso a varios tipos de archivo añade el siguiente código y modifica la lista de tipos de archivo entre baverticales para que se adapte a tus necesidades:

    Fi l esMat ch "\ . ( ht access| ht passwd| i ni | phps| f l a| psd| l og| sh) $">r der Al l ow, Denyeny f r omal l/ Fi l esMatch>

    Evita la navegación de directorios no autorizada

    odemos evitar la navegación por los directorios indicando al servidor que devuelva un mensaje de “Prohibido – Seequiere autorización” a cualquier intento de ver un directorio. Esto sucede cuando en algún directorio no hay una pág

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    10/22

    de índice (index.html o index.php), y si no añades algún control de seguridad cualquier visitante podría ver el contenidese directorio desde su navegador. Para evitarlo solo tienes que añadir la siguiente regla:

    desact i var l a navegaci ón de di r ector i ospt i ons Al l - I ndexes

    or el contrario, si quieres permitir este tipo de navegación, usa la siguiente directiva:

    act i var l a navegaci ón de di r ect or i ospt i ons Al l +I ndexes

    Otro modo de evitar que el servidor muestre los directorios es con la siguiente directiva:

    evi t ar el l i st ado de car petasndexI gnore *

    Y, para finalizar, puedes usar la directiva I ndexI gnore para evitar que se muestren ciertos tipos de archivo:

    evi t ar que se muest r en ci ert os t i pos de ar chi vondexI gnore *. wmv *. mp4 *. avi *. etc

    Cambia la página índice por defecto

    sta regla le dice al servidor que busque y muestre “tienda.html” como el índice por defecto del directorio. Debe estar

    fichero .htaccess del directorio en el que quieras remplazar el fichero índice por defecto, por ejemplo “index.html”:

    si r ve una pági na í ndi ce al t er nat i va a l a por def ect oi r ect oryI ndex t i enda. ht ml

    on la siguiente regla vamos un paso más allá y le decimos al servidor que revise los archivos del directorio raíz y mua primera que se encuentre en la lista (de izquierda a derecha), si no existe la siguiente y así sucesivamente:

    si r ve el pr i mer f i cher o di sponi bl e de l a l i st a como í ndi ce por def ect oi r ect or yI ndex ti enda. ht ml i ndex. php i ndex. ht ml def aul t . ht m

    Oculta extensiones de script

    Otra manera de mejorar la seguridad es ocultar los lenguajes script remplazando las extensiones reales de los scripts coextensiones de pega a tu elección. Por ejemplo, cambiando la extensión “. f o o” a “. php”:

    si r ve ar chi vos f oo como ar chi vos phpddType appl i cat i on/ x- ht t pd- php . f oo

    si r ve archi vos f oo como ar chi vos cgiddType appl i cat i on/ x- ht t pd- cgi . f oo

    Limita acceso a la Red de Área Local (LAN)

    l i mi t a el acceso a l a red de ár ea l ocalLi mi t GET POST PUT>r der deny, al l oweny f r om al ll l ow f r om 192. 168. 0. 0/ 33/ Li mi t >

    Asegura directorios por dirección IP y/o dominio

    n este ejemplo todas las direcciones IP tienen permitido el acceso excepto 16.654.98.123 y el dominio “dominio.es”:

    permi t i r a t odas except o a l as i ndi cadasLi mi t GET POST PUT>rder al l ow, denyl l ow f r om al leny f r om 16. 654. 98. 123

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    11/22

    eny f r om . *domi ni o\ . es. */ Li mi t >

    n este otro ejemplo se deniega acceso a todas las direcciones IP excepto a la 16.654.98.123 y al dominio “dominio.es

    denegar acceso a t odas excepto a l as i ndi cadasLi mi t GET POST PUT>r der deny, al l oweny f r om al ll l ow f r om 16. 654. 98. 123l l ow f r om . *domi ni o\ . es. */ Li mi t >

    A continuación vamos un poco más allá y bloqueamos visitantes indeseables basándonos en el dominio de referencia.También puedes ahorrar ancho de banda bloqueando tipos de archivo específicos como vimos antes de los dominios deferencia. Simplemente cambia los nombres de dominio del ejemplo por tus odiados favoritos::

    bl oquea vi si t ant es desde l os si gui ent es domi ni osI f Modul e mod_r ewr i t e. c>ewr i t eEngi ne onewr i t eCond %{HTTP_REFERER} robaper as\ . i nf o [ NC, OR]ewr i t eCond %{HTTP_REFERER} pagaf ant as\ . net [ NC, OR]ewr i t eRul e . * - [ F]/ i f Modul e>

    mpide o permite acceso al dominio a un rango de direcciones IP

    Hay varias maneras efectivas de bloquear un rango de direcciones IP mediante .htaccess y vamos a ver varias. El primque tenemos bloquea un rango de IPs especificado por su número CIDR (Classless Inter-Domain Routing). Este métodmuy útil para bloquear super spammers como RIPE, Optinet y similares. Si, por ejemplo, te das cuenta de que estásañadiendo un montón de líneas de directivas Apache deny  para direcciones que empiezan con los mismos números, euna de ellas y haz un whois. Bajo el listado de resultados del whois encontrarás el valor CIDR que representa a cadadirección IP asociada a esa red en particular. Así que bloquear mediante el CIDR es un modo muy efectivo de evitar qun montón de IPs del mismo atacante intenten acceder a tu web. Aquí tienes un ejemplo muy genérico de bloqueo porCIDR, cambia los números a los que quieras bloquear:

    bl oquear r ango de I Ps por número CI DRLi mi t GET POST PUT>rder al l ow, deny

    l l ow f r om al leny f r om 10. 1. 0. 0/ 16eny f r om 80. 0. 0/ 8/ Li mi t >

    a situación contraria sería permitir el acceso a una IP por número CIDR:

    per mi t i r un r ango I P por número CI DRLi mi t GET POST PUT>r der deny, al l oweny f r om al ll l ow f r om 10. 1. 0. 0/ 16l l ow f r om 80. 0. 0/ 8/ Li mi t >

    Otra manera eficaz de bloquear un rango completo de direcciones IP requiere truncar dígitos hasta que aparezca el ranbuscado. Como una dirección IP se lee de izquierda a derecha su valor representa una dirección específica. Por ejempuna dirección IP 99.88.77.66 se refiere a una dirección IP específica y única. Ahora bien, si quitamos los dos últimosdígitos (66) de la dirección se referirá a cualquier dirección IP que empiece con el resto de números, o sea, que 99.88.vale para 99.88.77.1, 99.88.77.2, … 99.88.77.99, …y así sucesivamente.

    Y si seguimos con el mismo sistema, quitando otro par de dígitos de la dirección, su rango se amplía para referirse acualquier dirección IP que empiece con 99.88.xx.xx, así que bloquearías 65.536 direcciones IP (256*256). Siguiendo ógica es posible bloquear todo un rango de direcciones IP a distintos grados de necesidad. El siguiente ejemplo es un

    muestra de lo que estamos hablando:

    bl oquear un r ango de I P por t r uncado de números

    http://www.whois.net/http://www.whois.net/

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    12/22

    Li mi t GET POST PUT>rder al l ow, denyl l ow f r om al leny f r om 99. 88. 77. 66eny f r om99. 88. 77. *eny f r om 99. 88. *. *eny f r om 99. *. *. */ Li mi t >

    Y para hacerlo al contrario, también podemos dar permisos a rangos de IPs usando el mismo sistema:

    per mi t i r a un r ango de I P por t r uncado de númer osLi mi t GET POST PUT>r der deny, al l oweny f r om al ll l ow f r om 99. 88. 77. 66l l ow f r om 99. 88. 77. *l l ow f r om 99. 88. *. *l l ow f rom99. * . * . */ Li mi t >

    Bloquea o permite acceso a múltiples direcciones IP en una sola línea

    odemos ahorrar algo de espacio bloqueando rangos de direcciones IP en una sola línea:

    bl oqueo de dos di r ecci ones I P concret aseny f r om 99. 88. 77. 66 11. 22. 33. 44

    bl oqueo de t r es di r ecci ones I P concr etaseny f r om 99. 88 99. 88. 77 11. 22. 33

    Y, de igual modo, podemos permitir acceso a varias IPs en una sola línea con el mismo truco:

    permi so de acceso a dos di r ecci ones I P concr et asl l ow f r om 99. 88. 77. 66 11. 22. 33. 44 permi so de acceso a t r es di r ecci ones I P concr et asl l ow f r om99. 88 99. 88. 77 11. 22. 33

    Más reglas para bloquear y permitir acceso a direcciones IP

    Otras posibles reglas para bloquear diversos tipos de direcciones IP serían las siguientes. Estas reglas se pueden adaptagualmente para dar permiso a valores concretos de IPs simplemente cambiando la directiva deny por al l ow:

    bl oquear un domi ni o parci al a t r avés de val ores de r ed o máscar a de redeny f r om99. 1. 0. 0/ 255. 255. 0. 0

    bl oquear un sol o domi ni oeny f r om 99. 88. 77. 66

    bl oquear domi ni o. es pero per mi t i r a sub. domi ni o. esr der deny, al l oweny f r om domi ni o. esl l ow f r om sub. domi ni o. es

    Para el “hotlinking” y servir contenido alternativo

    Ya hemos hablado varias veces del hotlinking, esa plaga de roba webs que rulan por Internet. Si quieres que se muestrcontenido distinto en aquellos sitios que te roban tus publicaciones copiando y pegando directamente o desde agregadRSS puedes usar el siguiente código. Por supuesto cambia las rutas y nombres de archivo del ejemplo por los tuyos. Ten cuenta también que este método bloquea todos los servicios RSS, como Feedburner o Feedly. Si quieres un métodoefinado usa el de este enlace:

    par ar el hot l i nki ng y most r ar cont eni do al t er nat i voI f Modul e mod_r ewr i t e. c>ewr i t eEngi ne onewr i t eCond %{HTTP_REFERER} ! $̂ewr i t eCond %{HTTP_REFERER} ! ĥt t p: / / ( www\ . ) ?domi ni o\ . es/ . *$ [ NC]ewr i t eRul e . *\ . ( gi f | j pg) $ ht t p: / / www. domi ni o. es/ er esunr obaper as. j pg [ R, NC, L]/ i f Modul e>

    http://ayudawp.com/que-es-hotlinking-y-como-protegerte/http://ayudawp.com/que-es-hotlinking-y-como-protegerte/

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    13/22

    i quieres mostrar una página de error en vez de una imagen desagradable, remplaza la línea que contienea Rewr i t eRul e del código anterior por la siguiente línea:

    servi r una pági na st ander de 403 pr ohi bi doewr i teRul e . * \ . ( gi f | j pg) $ - [ F, L]

    i, por el contrario, quieres permitir que algún servicio o sitio concreto que no sea el tuyo pueda mostrar tus imágenesañade el siguiente código después de la línea que contiene la cadena “dominio.es” del ejemplo anterior:

    per mi t i r hot l i nki ng del si gui ent e si t i oewr i t eCond %{HTTP_REFERER} ! ĥt t p: / / ( www\ . ) ?webami ga\ . es/ . *$ [ NC]

    Bloquea robots maliciosos, extractores de webs y navegadores offline

    A continuación veremos unas reglas muy útiles para evitar que nos inyecten código. Todos los agentes que pongamos ista tendrán acceso denegado y recibirán un mensaje de error. Hay muy buenas listas por ahí, así que no te quedes en

    ejemplo. Y, por favor, NO incluyas el “[OR]” en la última directiva Rewr i t eCond o tu servidor se caerá mostrandomúltiples errores 500 en todas las páginas:

    denegar acceso a r obots mal i ci osos, ext r actores de webs y navegadores of f l i neewr i t eBase /ewr i t eCond %{HTTP_USER_AGENT} Ânarchi e [ OR]ewr i t eCond %{HTTP_USER_AGENT} ÂSPSeek [ OR]ewr i t eCond %{HTTP_USER_AGENT} ât t ach [OR]ewr i t eCond %{HTTP_USER_AGENT} âut oemai l spi der [ OR]ewr i t eCond %{HTTP_USER_AGENT} X̂al don\ WebSpi der [ OR]ewr i t eCond %{HTTP_USER_AGENT} X̂enu [ OR]ewr i t eCond %{HTTP_USER_AGENT} Ẑeus. *Webst er [ OR]ewr i t eCond %{HTTP_USER_AGENT} Ẑeusewr i t eRul e .̂ * - [ F, L]

    ambién puedes mostrar un mensaje de error más amistoso enviando a tus molestos amigos a un sitio a tu elecciónimplemente remplazando la directiva Rewr i t eRul e de la última línea del código anterior con alguno de los siguientes

    ejemplos:

    l os mandamos a un si t i o cachondo a nuest r a el ecci ónewr i t eRul e .̂ *$ ht t p: / / www. di sney. com [ R, L]

    ambién, siendo algo más malo, puedes mandarles a un agujero negro virtual o a una dirección de email falsa:

    l os mandamos a un aguj ero negr o vi r t ual o a una di r ecci ón de emai l f al saewr i t eRul e .̂ *$ ht t p: / / engl i sh- 61925045732. spampoi son. com [ R, L]

    uedes también incluir sitios de referencia específicos a tu lista negra usandoHTTP_REFERER:

    ewr i t eCond %{HTTP_REFERER} ĥt t p: / / www. domi ni omal o. or g$ewr i t eRul e ! ĥt t p: / / [ /̂ . ] \ . t udomi ni o\ . es. * - [ F, L]

    Otros divertidos trucos de bloqueo

    Aunque las siguientes técnicas de redirección están pensadas para bloquear y redirigir a sitios indeseables también pue

    usarse para redirecciones más amables y útiles:

    r edi r i gi r cual qui er pet i ci ón de l o que sea de un si t i o spam a ot r oewr i t eCond %{HTTP_REFERER} ĥt t p: / / . *s i t i ospam. *$ [ NC]ewr i t eRul e . * ht t p: / / www. ot r osi t i ospam. com [ R]

    r edi r i gi r t odas l as pet i ci ones de un si t i o a l a i magen de ot r o si t i o de spamewr i t eCond %{HTTP_REFERER} ĥt t p: / / . *s i t i ospam. *$ [ NC]ewr i t eRul e . * ht t p: / / www. ot r osi t i ospam/ al go. j pg [ R]

    r edi r i gi r t r áf i co de una di r ecci ón o r ango a ot r o si t i oewr i t eCond %{REMOTE_ADDR} 192. 168. 10. *ewr i t eRul e . * ht t p: / / www. ot r osi t i ospam. com/ i ndex. ht ml [ R]

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    14/22

    Aún más trucos para bloquear escoria

    o que sigue es una serie de códigos paso a paso que te ayudarán a bloquear todo tipo de entidades. No van por separaino combinados entre ellos así que observa lo que hacen y adáptalos a tus necesidades::

    establ ecemos vari abl es para agent es de usuari o, r ef erenci as y di r ecci ones I PetEnvI f NoCase User- Agent ". *( user- agent - you- want - t o- bl ock| php/ perl ) . *" Bl ockedAgentet EnvI f NoCase Ref er er ". *( bl ock- t hi s- r ef er r er | and- t hi s- r ef er r er | and- t hi s- r ef er r er ) . *" Bl ockedRef eet EnvI f NoCase REMOTE_ADDR " . *( 666. 666. 66. 0| 22. 22. 22. 222| 999. 999. 99. 999) . *" Bl ockedAddr ess

    est abl ecemos l a var i abl e par a cl acker r ed cl ase B que provenga de una r ed a bl oquear det ermi nadetEnvI f NoCase REMOTE_ADDR "66. 154. *" Bl ockedAddr ess

    est abl ecemos l a var i abl e para dos r edes cl ase B concr etas de ej empl o 198. 25. 0. 0 y 198. 26. 0. 0et EnvI f NoCase REMOTE_ADDR "198. 2(5| 6) \ . . *" Bl ockedAddr ess

    denegamos acceso a cual qui era que se aj ust e a l os ant er i ores códi gos y l es envi amos un mensaj e 4Li mi t GET POST PUT>r der deny, al l oweny f r om env=Bl ockedAgenteny f r om env=Bl ockedRef erereny f r om env=Bl ockedAddr essl l ow f r om al l/ Li mi t >

    Protege con contraseña archivos, directorios y más…

    Un modo exhaustivo de asegurar un sitio es usar autenticación mediante usuario y contraseña, pudiendo proteger archiconcretos, varios archivos, directorios o incluso protegerse de cualquier IP excepto de la especificada. Hay un paso pry es la creación del fichero .htpasswd, que  puedes generar aquí. Adapta los siguientes códigos a tus especificaciones:

    prot eger con cont r aseña un archi voFi l es secur e. php>uthType Basi cut hName " Avi so"ut hUserFi l e / home/ r ut a/ . ht passwdequi r e val i d- user/ Fi l es>

    pr oteger con cont r aseña var i os ar chi vosFi l esMat ch " (̂ execut e| i ndex| secur e| i nsani t y| bi scui t ) *$">uthType basi cuthName "Desar r ol l ador"ut hUserFi l e / home/ r ut a/ . ht passwdequi r e val i d- user/ Fi l esMatch>

    pr oteger con cont r aseña el di r ect ori o en el que está al oj ado el ht accessuthType basi cut hName "Est e di r ect ori o est á pr otegi do"ut hUserFi l e / home/ r ut a/ . ht passwdut hGr oupFi l e / dev/ nul lequi r e val i d- user

    pr oteger con cont r aseña el di r ect ori o para cada I P except o l a especi f i cada cr ea un f i chero ht access en cada di r ect ori o para pr otegerl outhType Basi c

    uthName "Personal "ut hUserFi l e / home/ r ut a/ . ht passwdequi r e val i d- userl l ow f r om 99. 88. 77. 66at i sf y Any

    Nota: la mayoría de proveedores de alojamiento actuales ofrecen la protección de carpetas y archivos mediante contradesde su panel de control, evitando la necesidad de crear y modificar ficheros manualmente.

    Requerir SSL (Secure Sockets Layer)

    o siguiente es un método excelente para requerir SSL:

    http://www.htaccesstools.com/htpasswd-generator/http://www.htaccesstools.com/htpasswd-generator/

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    15/22

    r equer i r SSLSLOpt i ons +St r i ct Requi r eSLRequi r eSSLSLRequi r e %{HTTP_HOST} eq "domi ni o. es"rr orDocument 403 ht t ps: / / domi ni o. es

    r equer i r SSL si n mod_sslewr i t eCond %{HTTPS} ! =on [ NC]ewr i t eRul e .̂ *$ ht t ps: / / %{SERVER_NAME}%{REQUEST_URI } [ R, L]

    Automáticamente CHMOD varios tipos de archivo

    ste otro método es genial para hacer cambios de permiso mediante CHMOD a varios tipos de archivo. Pon estas reglel .htaccess de la carpeta raíz para que afecte a todos los tipos de archivo, o sitúalo en una carpeta concreta para que aolo a los archivos de la misma. Por supuesto, modifica los archivos del código a lo que quieras modificar tu:

    cambi ar aj ust es CHMOD par a archi vos concr et os r ecuer da nunca poner CHMOD 777 a menos que sepas l o que est ás haci endo l os ar chi vos que r equi eran acceso gl obal de escr i t ura deben usar CHMOD 766 en vez de 777 puedes hacer que ci er t os t i pos de archi vo sean pr i vados con CHMOD en 400hmod . htpasswd f i l es 640hmod . ht access f i l es 644hmod php f i l es 600

    Oculta todas las extensiones de archivo

    ste método disfraza todos los tipos de archivo, sus extensiones de archivo, y los muestra como si fuesen archivos .phpo que tu quieras):

    di sf r aza t odas l as ext ensi ones de ar chi vo como si f uesen phpor ceType appl i cat i on/ x- ht t pd- php

    Protégete contra ataques de denegación de servicio (DOS) limitando el tamaño de carga dearchivo

    Una manera de proteger tu servidor de ataques DOS es limitar el tamaño máximo permitido para carga de archivos. Enejemplo limitamos el tamaño de subida a 10240000 bytes, el equivalente a 10 megabytes. Lógicamente, este código so

    es útil si permites subir archivos a tu sitio:

    prot ecci ón cont r a ataques DOS l i mi t ando el t amaño de carga de archi vosmi t Request Body 10240000

    Asegura directorios desactivando la ejecución de scripts

    ara evitar la ejecución de scripts maliciosos nada mejor que asegurar los directorios que puedan verse afectados. Camas extensiones de script a lo que necesites:

    asegur ar di r ect or i o desact i vando l a ej ecuci ón de scr i pt sddHandl er cgi - scr i pt . php . pl . py . j sp . asp . ht m . sht ml . sh . cgipt i ons - ExecCGI

    8. Trucos de usabilidad

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    16/22

    Miminiza el parpadeo de imagen por CSS en IE6

    on las siguientes reglas minimizamos o incluso eliminados el parpadeo de imagen de fondo por CSS en Internet Expl6:

    mi ni mi zar parpadeo de i magen en I E6xpi r esAct i ve Onxpi r esByType i mage/ gi f A2592000xpi r esByType i mage/ j pg A2592000xpi r esByType i mage/ png A2592000

    irve páginas de error personalizadas

    Usa las siguientes reglas para mostrar tus propias páginas de error personalizadas. Simplemente recuerda cambiar la ruarchivos por los que hayas creado tu. Ten en cuenta que tus páginas de error deben pesar más de 512 bytes para que ngnore Internet Explorer:

    servi r pagi nas de err or per sonal i zadasr r orDocument 400 / er r ores/ 400. htmlr r orDocument 401 / er r ores/ 401. htmlr r orDocument 403 / er r ores/ 403. htmlr r orDocument 404 / er r ores/ 404. htmlr r orDocument 500 / er r ores/ 500. html

    Ofrece un documento de error global

    of r ece un document o de err or gl obalewr i t eCond %{REQUEST_FI LENAME} ! - f ewr i t eCond %{REQUEST_FI LENAME} ! - dewr i t eRul e .̂ *$ / car pet a/ er r or . php [ L]

    Usa comprobación de errores de ortografía básicos en URLs

    l siguiente truco es magia pura para corregir errores básicos de ortografía en URLs:

    cor r egi r aut omati cament e er r ores de ort ogr af i aI f Modul e mod_spel i ng. c>heckSpel l i ng On/ I f Modul e>

    ndica al navegador que descargue los archivos multimedia en vez de mostrarlos

    Normalmente los navegadores tratan de reproducir los archivos multimedia cuando ofreces un enlace a los mismos. Eliguiente método fuerza a que se muestre un mensaje en el que ofrece reproducirlos o descargarlos:

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    17/22

    i ndi ca al navegador que descargue l os archi vos mul t i medi addType appl i cat i on/ octet - st r eam . aviddType appl i cat i on/ oct et - st r eam . mpgddType appl i cati on/ octet - st r eam . wmvddType appl i cat i on/ oct et - st r eam . mp3

    ndica al servidor que muestre el código fuente de los tipos de archivo dinámicos

    n ocasiones puede que quieras mostrar el contenido de archivos dinámicos en vez de ejecutarlos como scripts. Crea udirectorio donde situar estos archivos que prefieres que se visualicen en vez de ejecutarlos y añade la siguiente línea d

    código al .htaccess de ese directorio:

    emoveHandl er cgi - scr i pt . pl . py . cgi

    Redirige a los visitantes a un sitio temporal durante tareas de desarrollo o mantenimiento

    uando estás haciendo tareas de desarrollo, reparación o mantenimiento, es buena idea disponer de un sitio alternativodonde ofrecer contenido a tus visitantes, y sobre todo avisarles de que el sitio no está desaparecido sino simplementemejorándose. Por supuesto, debes disponer del sitio temporal y adaptar el código a la ruta que elijas:

    redi r i gi r a l os vi s i t ant es a un s i t i o al t ernat i vor r or Document 403 ht t p: / / www. si t i o- al t er nat i vo. comr der deny, al l oweny f r omal ll l ow f r om 99. 88. 77. 66

    Pide contraseña de acceso a los visitantes durante tareas de desarrollo o mantenimiento

    Otra posible solución es esconder tu sitio durante las tareas de mantenimiento o mejora. Para ello bloquearemos los acnormales pidiendo usuario y contraseña mediante el método anterior de .httppasswd y permitiremos acceso a IPsconcretas:

    cont r aseña para l os vi si t ant esuthType basi cuthName "Est e si t i o est á act ual ment e en mant eni mi ent o"ut hUserFi l e / home/ r ut a/ . ht passwd

    ut hGr oupFi l e / dev/ nul lequi r e val i d- user per mi t i mos al webmast er y ot r os accederr der Deny, Al l oweny f r omal ll l ow f r om 111. 222. 33. 4l l ow f r om f avori t e. val i dat i on/ servi ces/l l ow f r om googl ebot . comat i sf y Any

    Evita acceso a archivos o directorios durante periodos de tiempo concretos

    stupendo truco para evitar accesos por periodos horarios. Muy friki pero útil en ocasiones:

    evi t ar acceso a medi a noche

    ewr i t eCond %{TI ME_HOUR} 1̂2$ewr i t eRul e .̂ *$ - [ F, L]

    evi t ar accesos mi ent r as comesewr i t eCond %{TI ME_HOUR} (̂ 12| 13| 14| 15) $ewr i t eRul e .̂ *$ - [ F, L]

    9. Trucos de redirección

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    18/22

    Nota importante relativa a las redirecciones a través de mod_rewrite

    ara que funcionen las redirecciones que usen la directivamod_r ewr i t e es necesario que esté activo Rewr i t eEngi ne. Euna práctica común activar la directiva mod_r ewr i t e, ya sea en el archivo de configuración del servidor o al principio

    fichero .htaccess en la carpeta raíz del sitio. Si la directivamod_r ewr i t e no está incluida en alguno de estos dos lugaredebería añadirse en la primera línea de cualquier bloque de código que use una función de rewrite (p.ej.,mod_r ewr i t epero solo debe incluirse una sola vez en cada archivo .htaccess:

    se i ni ci a y act i va el mot or r ewr i t eewr i t eEngi ne on

    Redirección desde http://www.dominio.es a http://dominio.es

    e puede usar una redirección 301 para definir una redirección permanente desde la versión con www de un dominio aespectiva versión sin www. Eso sí, comprueba que no hay errores siempre que hagas una redirección 301, hay inclus

    herramientas de comprobación de cabeceras del servidor  para ello. También es importante incluir siempre una barra “

    enlazar directorios, y – muy importante – no marees a los buscadores, sé consistente con la decisión de www o no wwo usas siempre o nunca pero no una mezcla:

    r edi r ecci ón per manent e de domi ni o www a si n wwwewr i t eEngi ne onpt i ons +Fol l owSymLi nksewr i t eCond %{HTTP_HOST} ŵww\ . domi ni o\ . es$ [ NC]ewr i t eRul e (̂ . *) $ ht t p: / / domi ni o. es/ $1 [ R=301, L]

    Redirección desde http://viejo-dominio.es a http://nuevo-dominio.es

    Un modo básico de cambiar de un dominio viejo a uno nuevo (en el que no cambien los nombres de archivos y carpetmportante) es crear una regla de Rewr i t e para redirigir del viejo dominio al nuevo. Nada más hacer la redirección pu

    que aún veas la URL del viejo dominio en la barra de direcciones del navegador, así que para comprobar que lo has hbien haz clic en cualquier enlace interno o imagen para comprobar que se ha hecho la redirección y todo está en el nu

    r edi r ecci on de un domi ni o vi ej o al nuevoewr i t eEngi ne Onewr i t eRul e (̂ . *) $ ht t p: / / nuevo- domi ni o. es/ $1 [ R=301, L]

    Redirección a una dirección concreta en base a caracteres concretos

    No es tan raro. Imagina que quieres redirigir cualquier petición que contenga el carácter “seo” a una categoríaconcreta situada en http://ayudawp.com, pues entonces remplazaremos en el ejemplo la cadena “texto-buscado” por “y, lógicamente, la URL de destino:

    http://www.seoconsultants.com/tools/headers.asphttp://www.seoconsultants.com/tools/headers.asp

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    19/22

    r edi r i gi r cual qui er var i aci ón de un car áct er especí f i co a una di r ecci ón concret aewr i t eRul e t̂ ext o- buscado ht t p: / / ayuda. com/ cat egori a/ seo/ [ R]

    Y aquí otros dos métodos para hacer este tipo de tareas especiales:

    r edi r i gi r var i aci ones de URL al mi smo di r ect ori o de del mi smo ser vi dorl i asMat ch /̂ espec( i e| i es) / www/ docs/ dest i no

    r edi r i gi r var i aci ones de URL al mi smo di r ect ori o de ot r o servi doredi r ect Mat ch /̂ [ eE] spec( i e| i es) ht t p: / / ot r odomi ni o. es

    Otros curiosos pero estupendos trucos de redirección r edi r ecci ón de un si t i o compl eto con 301edi r ect 301 / ht t p: / / www. domi ni o. es/

    r edi r i gi r un archi vo concr eto con 301edi r ect 301 / cur r ent / cur r ent f i l e. ht ml ht t p: / / www. newdomai n. com/ new/ newf i l e. ht ml

    r edi r i gi r un si t i o compl eto con r edi r ecci ón permanent eedi r ect per manent / ht t p: / / www. domi ni o. es/

    r edi r i gi r una pági na o di r ect ori o con r edi r ecci ón permanent eedi r ect permanent vi ej o_ar chi vo. ht ml ht t p: / / www. nuevo- domi ni o. es/ nuevo_ar chi vo. ht mledi r ect per manent / vi ej o_di r ect or i o/ ht t p: / / www. nuevo- domi ni o/ nuevo_di r ect or i i o/

    r edi r i gi r un ar chi vo usando Redi r ect Matchedi r ect Match 301 .̂ *$ ht t p: / / www. domi ni o. es/ i ndex. ht ml

    Nota: Al redirigir archivos concretos utiliza la regla de ApacheRedi r ect  para los archivos dentro de un mismo dominia regla de Apache Rewr i t eRul e para cualquier otro dominio, especialmente si son distintos. La reglaRewr i t eRul e es

    potente que la regla Redi r ect , y debería funcionar de manera más eficaz.

    or tanto, usaremos los siguientes códigos para conseguir una redirección más precisa y potente (la primera línea redirun archivo, la segunda un directorio y la tercera un dominio):

    r edi r i gi r ar chi vos di r ect ori os y domi ni os con Rewr i t eRul eewr i t eRul e ht t p: / / vi ej o- domi ni o. es/ vi ej o- ar chi vo. ht ml ht t p: / / nuevo- domi ni o. es/ nuevo- ar chi vo. ht mlewr i t eRul e htt p: / / vi ej o- domi ni o. es/ vi ej o- di r ectori o/ ht t p: / / nuevo- domi ni o. es/ nuevo- di r ectori o/ewr i t eRul e ht t p: / / vi ej o- domi ni o. es/ ht t p: / / nuevo- domi ni o. es/

    Envia a los visitantes a un subdominio

    sta regla te asegura que todos los visitantes que estén viendo páginas en el subdominio que elijas. Edita “subdomain”“domain” y “tld” para poner tu subdominio, dominio y extensión de dominio, respectivamente:

    enví a a l os vi si t ant es a un subdomi ni oewr i t eCond %{HTTP_HOST} ! $̂ewr i t eCond %{HTTP_HOST} ! ŝubdomai n\ . domai n\ . com$ [ NC]ewr i t eRul e /̂ ( . *) $ ht t p: / / subdomai n. domai n. t l d/ $1 [ L, R=301]

    Más diversión con RewriteCond y RewriteRule

    r ewr i t e sol o si no se encuent r a el ar chi voewr i t eCond %{REQUEST_FI LENAME} ! - f ewr i t eRul e (̂ . +) especi al \ . ht ml ?$ cgi - bi n/ especi al / especi al - ht ml / $1

    r ewr i t e sol o si no se encuentr a una i magenewr i t eCond %{REQUEST_FI LENAME} ! - f ewr i t eRul e i magenes/ especi al / ( . *) . gi f cgi - bi n/ especi al / mkgi f ?$1

    r egl as seo de rewr i t e para var i as car petasewr i t eRul e (̂ . *) / aud/ ( . *) $ $1/ ar chi vos- audi o/ $2 [L, R=301]ewr i t eRul e (̂ . *) / i mg/ ( . *) $ $1/ archi vos- i magen/ $2 [ L, R=301]ewr i t eRul e (̂ . *) / f l a/ ( . *) $ $1/ ar chi vos- f l ash/ $2 [ L, R=301]ewr i t eRul e (̂ . *) / vi d/ ( . *) $ $1/ ar chi vos- vi deo/ $2 [ L, R=301]

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    20/22

    anal i si s de paquetes del navegador - sni f f ers - medi ant e ent ornos var i abl es de ht accessewr i t eCond %{HTTP_USER_AGENT} M̂ozi l l a. *ewr i t eRul e /̂ $ / i ndex- f or - mozi l l a. ht ml [ L]ewr i t eCond %{HTTP_USER_AGENT} L̂ynx. *ewr i t eRul e /̂ $ / i ndex- f or - l ynx. ht ml [ L]ewr i t eRul e /̂ $ / i ndex- f or - al l - ot her s. ht ml [ L]

    r edi r i gi r una query a l a búsqueda de Googl ept i ons +Fol l owSyml i nksewr i t eEngi ne Onewr i t eCond %{REQUEST_URI } . googl e\ . php*ewr i t eRul e (̂ . *) $ ĥt t p: / / www. googl e. com/ sear ch?q=$1 [ R, NC, L]

    denegar una pet i ci ón en base al met odo de l a pet i ci ónewr i t eCond %{REQUEST_METHOD} (̂ TRACE| TRACK| OPTI ONS| HEAD) $ [ NC]ewr i t eRul e .̂ *$ - [ F]

    r edi r i gi r l as car gas a un si t i o mej orewr i t eCond %{REQUEST_METHOD} (̂ PUT| POST) $ [ NC]ewr i t eRul e (̂ . *) $ / cgi - bi n/ pr ocesador - car gas. cgi ?p=$1 [ L, QSA]

    Más diversión con Redirect 301 y RedirectMatch 301

    r edi r ecci ón seo para un sol o ar chi voedi r ect 301 / vi ej o- di r ectori o/ vi ej o- ar chi vo. ht ml ht t p: / / domi ni o. es/ nuevo- di r ectori o/ nuevo-rchi vo. ht ml

    r edi r ecci on seo para vari os ar chi vos

    r edi r i ge t odos l os ar chi vos de un di r ector i o cuyas pr i meras l etr as sean xyzedi r ect Mat ch 301 / di r ectori o/ xyz( . *) ht t p: / / domi ni o. es/ $1

    r edi r ecci on seo par a r edi gi r i r un si t i o ent er o a ot r o domi ni oedi r ect 301 / ht t p: / / ot r o- domi ni o. es

    10. Trucos especiales para WordPress

    Hemos visto muchos trucos de .htaccess para WordPress pero aquí tienes los conceptos básicos y también un truco úque es posible que no conocieses.

    Los “permalinks” de WordPress

    Ya sabrás que WordPress crea el archivo .htaccess cuando cambias los enlaces permanentes ( permalinks) a alguna otracosa distinta de los que vienen por defecto, y además añade unas reglas básicas para que funcionen. Esta configuracióbásica sería la siguiente:

    BEGI N Wor dPr essI f Modul e mod_r ewr i t e. c>ewr i t eEngi ne Onewr i t eBase /

    http://ayudawp.com/tag/htaccess/http://ayudawp.com/tag/htaccess/http://ayudawp.com/tag/htaccess/http://ayudawp.com/tag/htaccess/

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    21/22

    ewr i t eCond %{REQUEST_FI LENAME} ! - f ewr i t eCond %{REQUEST_FI LENAME} ! - dewr i t eRul e . / i ndex. php [ L]/ I f Modul e> END Wor dPr ess

    Ahora bien, si WordPress está instalado en un subdirectorio (por ejemplo “blog”) entonces las directivas serían así

    BEGI N Wor dPr essI f Modul e mod_r ewr i t e. c>ewr i t eEngi ne Onewr i t eBase / bl og/ewr i t eCond %{REQUEST_FI LENAME} ! - f ewr i t eCond %{REQUEST_FI LENAME} ! - dewr i t eRul e . / bl og/ i ndex. php [ L]/ I f Modul e> END Wor dPr ess

    Asegura los formularios de contacto de WordPress

    Un modo de asegurar los por defecto inseguros formularios de contacto de WordPress es verificar el dominio desde doe invoca al formulario. Recuerda cambiar el dominio y página de contacto del ejemplo por los tuyos:

    asegurar f ormul ar i os de cont act o de wordpr ess depende de qui en l o i nvocaewr i t eCond %{HTTP_REFERER} ! ĥt t p: / / www. domi ni o. es/ . *$ [ NC]ewr i t eCond %{REQUEST_POST} . *cont act o. php$ewr i t eRul e . * - [ F]

    11. Trucos extra

    Activa SSI para tipos de archivo HTML/SHTML

    act i var SSI par a t i pos de archi vo HTML y o SHTMLddType t ext / html . htmlddType text / html . sht mlddHandl er ser ver - parsed . ht mlddHandl er ser ver - parsed . sht mlddHandl er server - parsed . ht m

    Da acceso CGI a un directorio concreto

    dar acceso CGI a un di r ect or i o concr etopt i ons +ExecCGI

  • 8/17/2019 archivo oculto de sistema htaccess.pdf

    22/22

    ddHandl er cgi - scr i pt cgi pl par a act i var t odos l os scri pt s de un di r ect or i o usa l o si gui ent eet Handl er cgi - scri pt

    Desactiva magic_quotes_gpc en servidores con PHP activo

    desconect ar magi c_quot es_gpc en ser vi dor es con PHP act i voi f modul e mod_php4. c>hp_f l ag magi c_quotes_gpc of f / i f modul e>