Sunteți pe pagina 1din 14

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.

com

Editar htaccess para crear direcciones URL amigables

Autores del manual Este manual ha sido realizado por los siguientes colaboradores de DesarrolloWeb.com: Miguel Angel Alvarez
Director de DesarrolloWeb.com http://www.desarrolloweb.com (8 cap tulos!

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

&

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Introduccin a .htaccess y a las URLs amigables a buscadores


'lgunas ()# son mejor consideradas por los motores de b*s+ueda tipo ,oogle +ue otras. Esto ya lo hab amos comentado en nuestro manual de promoci%n web. -or ejemplo. ()#s como estas no son muy atracti/as para la promoci%n de las p0ginas: www.dominio.com/articulos/muestra.php1id234 www.dominio.com/pueblos/pueblo.php1nombre2torrelodones 'un+ue una ()# con par0metros tenga contenidos espec 5icos. los buscadores no las punt*an tan bien como si 5ueran los mismos contenidos con ()#s sin paso de par0metros. www.dominio.com/articulos/34.php www.dominio.com/pueblos/torrelodones.php 6ncluso. la direcci%n del art culo 34.php. podr a ser mejor si incluyese en la propia ()# alguna palabra cla/e. por ejemplo. si el art culo hablase sobre coches antiguos. una direcci%n mejor ser a: www.dominio.com/articulos/coches7antiguos.php
Re erencia: en nuestro manual de posicionamiento en buscadores e8plicamos con detalle las /entajas de utilizar ()#s amistosas a buscadores.

'l /er una ()# como esta. parece como si en el ser/idor web. en el directorio articulos tu/i9ramos un documento llamado coches7antiguos.php. En principio tendr a +ue ser as para +ue esta direcci%n 5uese correcta y no arrojase un error :;: de p0gina no encontrada. 'hora imaginemos +ue tenemos cientos o miles de art culos. Entonces deber amos +ue tener dentro del directorio articulos sus correspondientes cientos o miles de archi/os. Esto no es muy %ptimo de cara al mantenimiento de la p0gina. por+ue cada /ez +ue se publica un art culo se deber a crear el correspondiente archi/o en el ser/idor. en el directorio adecuado. -uede +ue ya sepamos acerca de esta idea de las ()#s amistosas para buscadores. pero ahora /amos a comentar sobre c%mo realizarlas ayud0ndonos del archi/o .htaccess y la instrucci%n )ewrite)ule. <on ello podemos crear ()#s 50cilmente en el ser/idor sin +ue se correspondan con documentos +ue tengamos en la propia estructura de directorios. Es decir. 'pache ser0 capaz de ser/ir ()#s +ue realmente no e8isten en el ser/idor. haciendo la redirecci%n a otros archi/os y procesando mediante -=-. u otro lenguaje de programaci%n compatible. para mostrar unos contenidos u otros dependiendo de la ()# +ue se est0 intentando acceder. #a inclusi%n de palabras cla/e dentro de las ()#s y conseguir e/itar el paso de par0metros. todo mediante el htaccess. es una t9cnica cada /ez m0s usada. +ue debemos conocer y utilizar para +ue nuestra p0gina sea 50cilmente promocionable en buscadores. El .htaccess es un archi/o de te8to propio de 'pache. +ue se coloca en cual+uiera de los directorios de publicaci%n del ser/idor web y a5ecta al directorio donde est9 colocado y a todos sus subdirectorios. <on .htaccess se pueden con5igurar muchos temas /ariados para esos directorios. sin tener +ue tocar el archi/o httpd.con5 de 'pache. +ue es donde se guardan las con5iguraciones generales del ser/idor.

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

$osotros /amos a e8plicar el uso de la instrucci%n )ewrite)ule. aun+ue htaccess sir/e para con5igurar otros muchos asuntos. >e puede obtener m0s in5ormaci%n sobre .htaccess en DesarrolloWeb.com:

El 5ichero httpd.con5 =taccess y p0ginas din0micas

El manual contin*a con e8plicaciones pr0cticas y detalladas sobre el trabajo con htaccess. Artculo por Miguel Angel Alvarez

Redirigir URLs a buscadores hacia URLs con paso de parmetros con RewriteRule
'hora /amos a /er c%mo realizar con htaccess unas reglas de redirecci%n. de las ()#s pensadas para +ue est9n bien promocionadas en buscadores hacia direcciones +ue nos sean 50ciles de procesar y mantener con -=-.
!ota:=ablamos de -=- por+ue estos trucos con htaccess son para el ser/idor 'pache y el lenguaje de programaci%n t pico de este ser/idor web es -=-.

El archi/o htaccess es un 5ichero de te8to +ue se llama .htaccess. es decir. su nombre comienza con un punto. >e puede crear con cual+uier editor de te8tos y se coloca en el directorio donde deseamos +ue a5ecten las con5iguraciones indicadas dentro del 5ichero. >i lo colocamos en el directorio de publicaci%n ra z del dominio. a5ectar0 a todos los directorios del dominio. pues este archi/o modi5ica el directorio +ue lo contiene y todos los subdirectorios. El mecanismo para crear unas redirecciones pensadas para un mejor posicionamiento en buscadores es el siguiente. En el archi/o .htaccess se de5ine una regla de redirecci%n interna. con esta sinta8is: )ewrite)ule url7patron url7destino )ewrite)ule es la instrucci%n para de5inir una redirecci%n. +ue recibe dos par0metros: url7patron y url7destino. En el primero se especi5ica una ()# patr%n. <uando la direcci%n a la +ue se est0 accediendo cumple el patr%n indicado en url7patron. se redirecciona internamente hacia la ()# de destino url7destino. #a p0gina se procesa en el archi/o indicado en url7destino. El patr%n es una e8presi%n regular +ue corresponde con un conjunto de ()#s posibles. <uando el /isitante intenta acceder a una ()# +ue cumple esa e8presi%n regular. internamente se procesa la p0gina a tra/9s de la url7destino. Decimos +ue es un proceso interno. por+ue nadie se entera +ue la ()# se est0 procesando a tra/9s de otro archi/o. pues la direcci%n +ue aparece en el na/egador siempre ser0 la original y los buscadores no podr0n detectar +ue 'pache ha realizado una redirecci%n interna para procesar la p0gina. 's pues. para los /isitantes y los buscadores +ue inde8en los contenidos de nuestra web. las direcciones +ue est0n accediendo son las amigables para buscadores. a pesar +ue en realidad
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. 4

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

esos documentos no e8istan dentro de la estructura de directorios del ser/idor y el procesamiento real de la p0gina se realice en otra ()# de destino. (n ejemplo de instrucci%n )ewrite)ule podr a ser el siguiente: )ewrite)ule ?articulos/(.@!A.php codigo//er7articulo.php1nombre2B& <omo se ha dicho. la primera parte es el patr%n +ue debe cumplirse para +ue se realice la redirecci%n interna. Dicho patr%n es una e8presi%n regular +ue tiene una sinta8is especial.
!ota: #a parte m0s complicada del trabajo con )ewrite)ule de htaccess es justamente la creaci%n de las e8presiones regulares. $osotros no /amos a e8plicar en este art culo la creaci%n de e8presiones regulares. pues resulta bastante compleja. pero realizaremos su5icientes ejemplos como para conocer los casos m0s t picos. $o obstante. e8isten re5erencias sobre e8presiones regulares +ue podemos /isitar para obtener m0s in5ormaci%n. Cisitar la categor a de e8presiones regulares en nuestro directorio.

#a direcci%n +ue se est0 accediendo en el ser/idor (()#! tiene +ue concordar con la e8presi%n regular para +ue se realice la redirecci%n. En la primera parte de la instrucci%n )ewrite)ule del ejemplo indicado anteriormente ten amos esta e8presi%n regular: ?articulos/(.@!A.php -ara e8plicar esta e8presi%n regular creo +ue es mejor /erla por partes. #a primera parte ser a D?articulos/D. Esto +uiere decir todas las ()# +ue comiencen por Darticulo/D (la palabra art culo seguida de una barra!. El car0cter ? signi5ica el comienzo de una e8presi%n. #a segunda parte es (@.!. El D@D signi5ica una o m0s repeticiones de algo. El D.D signi5ica cual+uier car0cter. luego D@.D signi5icar a uno o m0s repeticiones de cual+uier car0cter. es decir. cual+uier conjunto de uno o m0s caracteres. El par9ntesis sir/e para agrupar e8presiones. #uego /eremos para +u9 nos puede ser/ir esa agrupaci%n. -or *ltimo. en la e8presi%n regular tenemos DA.phpD. #a contrabarra es un car0cter de escape +ue sir/e para +ue el D.D siguiente no sea considerado como cual+uier car0cter. sino como un punto sin m0s. Entonces. esto +uiere decir D.phpD. En conjunto la e8presi%n regular signi5ica cual+uier cosa +ue empiece por Darticulos/D. seguido de cual+uier car0cter o conjunto de caracteres. seguido de D.phpD. <on esta e8presi%n regular concordar an ()#s como estas: articulos/lo+uesea.php articulos/otraEcosa.php articulos/&34:E887zz.php Dec amos +ue la parte con el (@.! +uiere decir cual+uier car0cter o conjunto de caracteres. 'dem0s. con este DcomodinD se puede construir la url7destino. Fij9monos en la segunda parte del )ewrite)ule: codigo//er7articulo.php1nombre2B& >implemente se ha indicado otra direcci%n donde hay un archi/o -=- +ue se /a a encargar de
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. :

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

procesar todas las ()#s +ue cumplan el patr%n e8plicado anteriormente. >i nos 5ijamos. dentro de la url7destino tenemos un B&. Esta /ariable se sustituye por lo +ue hab a dentro del (@.! indicado en el patr%n de la e8presi%n regular. -or ejemplo. una url de esta 5orma: www.dominio.com/articulos/plantasEmedicinales.php >e procesar0 en la direcci%n: www.dominio.com/codigo//er7articulo.php1id2plantasEmedicinales >i nos 5ijamos. la ()# de destino realiza el paso de par0metros. para +ue todos los art culos se procesen en el mismo archi/o. indicando en la direcci%n algo +ue sir/a para identi5icar ine+u /ocamente el art culo +ue se desea /er. >in embargo. ese paso de par0metros se realizar0 internamente y de manera transparente para el usuario +ue estar0 teniendo la impresi%n +ue la ()# +ue est0 procesando es la original +ue ha escrito en la barra de direcciones del na/egador. <omo se ha /isto. el B&. e8tra do de la ()# original en la parte del patr%n de la e8presi%n regular +ue se corresponde con el (@.!. se utiliza para construir la ()# +ue se /a a encargar de procesar la p0gina. "arning: mys+l7num7rows(!: supplied argument is not a /alid Gy>H# result resource in /home/chs/desarrolloweb.com/home/librerias/imprimir#manual#completo$.php on line %&'

!emplo ms comple!o de RewriteRule


En el anterior cap tulo /imos como trasladar con )ewrite)ule parte de una ()# est0tica a una ()# con paso de par0metros. -ara ello de5in amos en el patr%n una agrupaci%n con (@.! y luego la utiliz0bamos con B& en la ()# redirigida con paso de par0metros. Cer el anterior art culo para m0s in5ormaci%n. En algunas ocasiones no basta con en/iar un par0metro para +ue la p0gina reciba todos los datos +ue necesita para mostrar los contenidos espec 5icos. >i en la e8presi%n regular tu/i9ramos otros (@.! entonces en la url7destino tendr amos +ue utilizar B& para el primer (@.! +ue haya en la e8presi%n regular y B3 para el segundo. B4 para el tercero y as sucesi/amente. -or ejemplo. a+u podemos /er una sentencia )ewrite)ule +ue utiliza dos partes con (@.! para hacer el patr%n. )ewrite)ule ?agenda/(.@!/(.@!A.html codigo/cita.php1mes2B3Ianio2B& Esta e8presi%n regular +uiere decir: <ual+uier ()# +ue comience por Dagenda/D. seguida de cual+uier cosa. luego una barra y cual+uier otra cosa. acabado en D.htmlD (5ijarse la contrabarra antes de D.htmlD +ue es un car0cter de escape para indicar +ue el D.D de antes de DhtmlD es un punto. en lugar del codigo especial +ue suele signi5icar cual+uier caracter. Cer el art culo anterior para m0s e8plicaciones sobre las e8presiones regulares de este estilo.

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

<omo se puede /er. las direcciones est0ticas amigables a buscadores no tienen por +ue 5inalizar en .php. En este caso 5inaliza en .html. pero podr a acabar de cual+uier otra 5orma. como .htm. .php4. .shtml o en un directorio. En el caso del ejemplo anterior. una direcci%n con esta 5orma: www.dominio.com/agenda/3;;K/L >e har0 corresponder con una url7destino as : www.dominio.com/codigo/cita.php1mes2LIanio23;;K 'un+ue tambi9n podr an haber concordado otros modelos de direcciones como: www.dominio.com/agenda/;J/;& www.dominio.com/agenda/3;;K/marzo >er0 nuestra responsabilidad hacer el tratamiento para +ue s%lo las ()# +ue +ueremos muestren la p0gina correcta. Ceremos en el pro8imo cap tulo c%mo hacer este tratamiento de posibles errores y c%mo resol/er otros posibles problemas del uso del htaccess. Artculo por Miguel Angel Alvarez

"o tener dos URL con los mismos contenidos


(no de los problemas +ue podemos encontrar deri/ados del uso de htaccess para crear ()#s amistosas a buscadores es +ue se de el caso de +ue distintas ()#s muestren e8actamente las mismas in5ormaciones. -or lo /isto. tener en un dominio dos p0ginas con los mismos contenidos no est0 bien /isto por los motores de b*s+ueda. +ue pueden considerarlo una trampa encaminada a con5undirle y hacerle pensar +ue el sitio es m0s grande de lo +ue realmente es. M<%mo puede ser +ue dos p0ginas tengan los mismos contenidos1 -or ejemplo. pensemos en una regla como esta: )ewrite)ule ?articulos/(.@!A.php codigo//er7articulo.php1nombre2B& Esto +uiere decir +ue e8istir0n ()#s como estas: www.dominio.com/articulos/plantasEdecorati/as.php www.dominio.com/articulos/plantasEmedicinales.php www.dominio.com/articulos/plantasEaromaticas.php N 6maginemos +ue alguna persona se e+ui/oca y nos pone un enlace a un art culo +ue no e8iste:

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

www.dominio.com/articulos/plantasEdecor.php www.dominio.com/articulos/plantasEmedicina.php $osotros en la p0gina +ue muestra los art culos O/er7articulo.phpP tendremos +ue comprobar si e8iste un art culo con ese nombre.
//tengo +ue /er si este articulo tiene nombre Bss+l 2 Dselect Q 5rom articulo where nombre 2 Bnombre DR Brs 2 mys+l7+uery(Bss+l!R i5 (mys+l7num7rows(Brs!22;!S //es +ue no e8iste un articulo con ese nombre echo OError. $o tenemos ese art culoPR T

<on este c%digo. cada /ez +ue se escriba una ()# con un error nos mostrar a los mismos contenidos: el mensaje OError. $o tenemos ese art culoP. Esto es algo +ue pretend amos e/itar. -ara e/itar mostrar en ()#s +ue no e8isten realmente los mismos contenidos. una soluci%n es hacer una redirecci%n a una p0gina de error.
i5 (mys+l7num7rows(Brs!22;!S //es +ue no e8iste un script con ese id header (Dlocation: /error7articulo.phpD!R e8it(!R T

's . cuando alguien se e+ui/o+ue al componer la ()# se mostrar0 un mensaje de error. pero para el buscador todos los mensajes se o5recen desde la misma p0gina web. Tambi9n podemos hacer +ue -=- en/ e al na/egador del usuario una cabecera con el error de p0gina no encontrada (error :;: del =TT-!. header(D=TT-/&.; :;: $ot FoundD!R >on dos posibilidades. cada cual puede utilizar la +ue desee. aun+ue es posible +ue la del error :;: sea m0s *til y elegante. Artculo por Miguel Angel Alvarez

Redirecciones c#clicas con .htaccess


$uestro manual de crear ()#s amigables a buscadores con htaccess continua comentando algunos de los errores t picos +ue se pueden cometer a la hora de de5inir las reglas de redirecci%n. En mi e8periencia con .htacces he encontrado +ue es 50cil hacer un redireccionamiento c clico. Es decir. de5inir un )ewrite)ule con un patr%n +ue redirecciona a una ()# +ue sigue cumpliendo el patr%n. <omo esa segunda ()# concuerda toda/ a con el patr%n. se /ol/er0 a redirigir y seguir0 cumpliendo el patr%n. con lo +ue se /ol/er0 a redirigir. U as inde5inidamente.
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. L

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

'l escribir una direcci%n del dominio +ue cumpla el patr%n. el resultado de este problema de redirecci%n c clica ser0 +ue 'pache nos presentar0 un error D6nternal >er/er ErrorD. pero no ser0 mucho m0s descripti/o. por lo +ue podr a complicarse identi5icar el problema. Fij9monos en esta regla de redirecci%n:
)ewrite)ule ?dir/(.@!A.php dir/codigo.php1articulo2B&

Huiere decir +ue cual+uier ()# del directorio DdirD +ue acabe en .php. se redirigir0 a dir/codigo.php1articulo2888. -or ejemplo: http://www.midominio.com/dir/lo+uesea.php >e redirigir0 a: http://www.midominio.com/dir/codigo.php1articulo2lo+uesea <omo se puede /er. la ()# a la +ue se redirigir0 cumple tambi9n el patr%n. por+ue la ()# a la +ue se accede tambi9n est0 dentro del directorio DdirD y acaba en -=-. ($o se tiene en cuenta para comprobar el patr%n el par0metro +ue se pasa por la ()#! Ese )ewrite)ule ser a incorrecto. por padecer una redirecci%n c clica. -ara solucionarlo podemos hacer /arias cosas. -or ejemplo. redirigir a una ()# +ue no est9 dentro del directorio dir.
)ewrite)ule ?dir/(.@!A.php codigoEdir/codigo.php1articulo2B&

Esto 5uncionar a bien. #a ()# de antes http://www.midominio.com/dir/lo+uesea.php >er0 redirigida hacia http://www.midominio.com/codigoEdir/codigo.php1articulo2lo+uesea Vtra soluci%n +ue a /eces he utilizado es redirigir direcciones acabadas en .html a direcciones acabadas en .php. <omo las terminaciones son distintas. no habr0 redirecciones c clicas:
)ewrite)ule ?dir/(.@!A.html dir/codigo.php1articulo2B&

-or ejemplo. para la ()#: http://www.midominio.com/dir/otracosa.html #a redirigir0 a: http://www.midominio.com/dir/codigo.php1articulo2lo+uesea Esta *ltima ()#. como no acaba en .html no cumplir0 el patr%n y no tendremos la redirecci%n c clica. Artculo por Miguel Angel Alvarez

$ambio de URL redireccin %&' con .htaccess


' /eces nos /emos en la necesidad de cambiar las direcciones de nuestras p0ginas. por+ue hayamos realizado una reestructuraci%n del sitio. una reprogramaci%n o un cambio de dominio. $o cabe duda +ue esto siempre es un engorro. lo mejor ser a conser/ar las direcciones antiguas. +ue las conocen nuestros usuarios y est0n correctamente posicionadas en
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. 8

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

buscadores. pero en ocasiones no tenemos m0s remedio. En esos casos. lo m0s adecuado es 5acilitar tanto a usuarios como motores de b*s+ueda la localizaci%n de las nue/as ()#s +ue sustituyen a las /iejas. E8isten /arias maneras de hacer esto. unas m0s adecuadas +ue otras. pero parece ser +ue. de cara a buscadores como ,oogle. lo m0s adecuado es realizar una redirecci%n 4;& Dmo/ed permanentlyD. 's les estamos in5ormando +ue los contenidos han cambiado de localizaci%n permanentemente. de modo +ue los motores de b*s+ueda actualizar0n las direcciones en sus bases de datos. De cara a los usuarios. con una redirecci%n 4;& sus na/egadores cambiar0n las ()# por las nue/as de manera transparente para los usuarios. es decir. sin +ue tengan +ue hacer nada. En este art culo /eremos c%mo realizar una redirecci%n 4;& ayud0ndonos del archi/o htaccess de 'pache.
Re erencia: Tenemos algunas in5ormaciones sobre .htaccess en DesarrolloWeb.com. Editar htaccess para crear direcciones amigables http://www.desarrolloweb.com/manuales/htaccessEparaEurlsEamigables.html Ganual de 'pache http://www.desarrolloweb.com/manuales/:&/

)ealizar una redirecci%n 4;& con htaccess es muy simple. >e puede hacer con una l nea como esta en el archi/o: redirect 4;& /url7antigua.html http://www.dominioEnue/o.com/urlEnue/a/ <omo se ha /isto. se lanza un comando redirect. tipo 4;& y luego se indican tanto la url antigua como la nue/a. #a antigua simplemente se indica con la ()# relati/a al archi/o .htaccess. #a nue/a ()# se indica de manera absoluta. comenzando con http://. Tambi9n podemos hacer redirecciones en masa m0s complejas utilizando patrones. >i los patrones concuerdan. entonces se realiza la redirecci%n. -or ejemplo. si +ueremos +ue cual+uier ()# de un dominio se redirija a la portada o p0gina ra z de otro dominio. podremos hacer esto: redirectGatch 4;& ?(.Q!B http://www.desarrolloweb.com Esto. en un dominio llamado por ejemplo domantiguio.com. redireccionar a cual+uier ()# como http://domantiguo.com/lo+uesea/ a la ()# http://www.desarrolloweb.com. V bien una ()# como http://domantiguo.com/dir/otracosa.html se redirigir a a http://www.desarrolloweb.com. 'hora. si deseamos hacer una redirecci%n de una ()# de un dominio a la misma ()#. pero en otro dominio. podr amos hacer algo como esto: redirectGatch 4;& ?(.Q!B http://www.desarrolloweb.comB& Esto redirigir a algo como http://domantiguo.com/lo+uesea/ a la ()# http://www.desarrolloweb.com/lo+uesea. (na ()# como http://domantiguo.com/dir/otracosa.html la redirigir a a http://www.desarrolloweb.com/dir/otracosa.html.
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. W

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Artculo por Miguel Angel Alvarez

$arcter ( para )inalizar los patrones de redireccin con .htaccess


>iguiendo con los comentarios y consejos del manual de .htaccess. hay +ue comentar el uso del car0cter B en los patrones. para especi5icar el 5inal de una ()#. -ara e8plicarlo mejor /amos a /er un ejemplo. (eamos esta regla de .htaccess )ewrite)ule ?articulos/(.@!A.html codigo/muestra7articulo7htaccess.php1id2B& Esta regla dice +ue todas las ()# como estas: www.dominio.com/articulos/8.html www.dominio.com/articulos/yyy.html >er0n procesadas con el archi/o: www.dominio.com/codigo/muestra7articulo7htaccess.php1id28 www.dominio.com/codigo/muestra7articulo7htaccess.php1id2y -ero el tema es +ue este patr%n de htaccess tambi9n casa con otras url como estas: www.dominio.com/articulos/8.htmlXX www.dominio.com/articulos/8.htmlElo+uesea Esto es por+ue el patr%n coincide. por+ue corresponde con la regla. Es decir la regla dice +ue empieza la ()# de despu9s del dominio por Darticulos/D @ cual+uier conjunto de caracteres @ D.htmlD. Tendr amos +ue especi5icar de alguna 5orma +ue la ()# debe terminar en D.htmlD y nada m0s y para eso podemos utilizar DBD al 5inal de la regla. 'hora esta otra regla .htaccess m0s completa )ewrite)ule ?articulos/(.@!A.htmlB codigo/muestra7articulo7htaccess.php1id2B& En este caso hemos indicado con el DBD despu9s de A.html +ue la ()# debe 5inalizar ah . Algo como esto s) *ue concordar)a la regla htaccess: www.dominio.com/articulos/algo.html -ero esto no se procesar a por el .htaccess. por+ue no acaba en .html:

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

&;

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

www.dominio.com/articulos/algo.htmlXX Artculo por Miguel Angel Alvarez

*atrones de e+presiones regulares para htaccess


#as e8presiones regulares son. digamos. un hueso duro de roer. (tilizan un lenguaje complicado +ue a /eces se hace di5 cil de entender o de especi5icar. -or ello. es habitual +ue el desarrollador tenga ciertos problemas a la hora de crear sus patrones de e8presiones regulares para utilizar en el .htaccess. ' mi mismo me resultaba muchas /eces complicado escribir las reglas. hasta +ue entend un poco el lenguaje de e8presiones regulares y cre9 una serie de reglas de uso com*n. +ue luego suelo reutilizar en mis archi/os .htaccess. En este art culo pienso proporcionar una serie de ejemplos de reglas htaccess. o de patrones de e8presiones regulares +ue podemos utilizar en nuestras p0ginas web. $o obstante. cabe recordar para los lectores +ue tenemos di/ersos recursos interesantes para documentarse sobre estos asuntos en:

Ganual de htaccess <ategor a de e8presiones regulares. con di/ersos manuales y art culos sobre el tema.

>in m0s. empecemos dando los distintos ejemplos: E+emplo % de e,presi-n regular para htaccess
)ewrite)ule ?resultados/pagina7pg(Y;EWZ@!A.php resultados/inde8.php1I7pagi7pg2B&

Esta regla puede ser/ir bien para paginadores. por+ue crearmos ()#s amigables +ue tienen el n*mero de la p0gina de resultados +ue se desea /er. Esta regla redirige todo lo +ue sea como: www.midominio.com/resultados/pagina7pgJ.php www.midominio.com/resultados/pagina7pg34.php www.midominio.com/resultados/pagina7pg&WWW3.php N y cual+uier otra combinaci%n de n*meros. con tantos d gitos como sea necesario. ' direcciones como estas: www.midominio.com/resultados/inde8.php1I7pagi7pg2J www.midominio.com/resultados/inde8.php1I7pagi7pg234 www.midominio.com/resultados/inde8.php1I7pagi7pg2&WWW3 E+emplo $ de e,presi-n regular para htaccess
)ewrite)ule ?platos/letra7(YaEzZ!A.phpB codigo/platos7inicial.php1letra2B&

Esta regla htaccess es parecida a la anterior. s%lo +ue en /ez de n*meros gestiona iniciales y adem0s. como no tiene el signo D@D. s%lo acepta una letra. 'cepta ()#s como estas: www.midominio.com/platos/letra7a.php
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. &&

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

www.midominio.com/platos/letra78.php U redirige estas ()#s a direcciones como estas: www.midominio.com/codigo/platos7inicial.php1letra2a www.midominio.com/codigo/platos7inicial.php1letra28 -ero no acepta m0s de una letra en la inicial y s%lo acepta min*sculas. Vsea. estas direcciones no concordar an con el patr%n de e8presi%n regular: www.midominio.com/platos/letra78y.php www.midominio.com/platos/letra7'.php E+emplo . de e,presi-n regular para htaccess
)ewrite)ule ?platos/pais7(YaEz7EZ@!A.phpB codigo/platos7pais.php1nombre7pais2B&

Esta regla a/anza un poco en la regla anterior. por+ue permite cual+uier n*mero de caracteres y adem0s tambi9n acepta +ue se colo+uen guiones bajos y medios. 'cepta ()#s como estas: www.midominio.com/platos/pais7a.php www.midominio.com/platos/pais7abc.php www.midominio.com/platos/pais7aEb7c.php Estas direcciones las redireccionar a internamente a estas ()#: www.midominio.com/codigo/platos7pais.php1nombre7pais2a www.midominio.com/codigo/platos7pais.php1nombre7pais2abc www.midominio.com/codigo/platos7pais.php1nombre7pais2aEb7c Esta regla no aceptar a nombres de pa ses +ue tu/ieran una may*scula. Artculo por Miguel Angel Alvarez

Ms e!emplos de reglas .htaccess


En el art culo anterior estu/imos dando una serie de ejemplos para la creaci%n de e8presiones regulares +ue podemos utilizar en archi/os .htaccess. Cimos una serie de patrones simples y ahora /amos a seguir mostrando otros patrones. tambi9n sencillos. pero un poco m0s elaborados. 'ntes +ue nada. deber amos leer el art culo anterior. si es +ue no lo hemos hecho ya: -atrones de e8presiones regulares para htaccess. E+emplo & de regla htaccess
)ewrite)ule ?platos/pais7(YaEz'E[7EZ@!A.phpB codigo/platos7pais.php1nombre7pais2B&

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

&3

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

Esta regla es similar a la anterior. pero ahora s +ue estamos aceptando +ue algunos caracteres del nombre del pa s /engan en may*sculas. -or ejemplo. acepta estas ()#s: www.midominio.com/platos/pais7Espana.php www.midominio.com/platos/pais7)einoE(nido.php Hue redirigir a a ()#s como estas: www.midominio.com/codigo/platos7pais.php1nombre7pais2Espana www.midominio.com/codigo/platos7pais.php1nombre7pais2)einoE(nido E+emplo / de regla htaccess
)ewrite)ule ?platos/nombre7(YaEz'E[;EW7EZ@!A.phpB codigo/platos7nombre.php1nombre2B&

Esta regla .htaccess complica toda/ a un poco m0s la regla anterior. con la posibilidad +ue tambi9n se pongan n*meros en la e8presi%n. )edigirir0 ()#s como estas: www.midominio.com/platos/nombre7paella.php www.midominio.com/platos/nombre7-'E##'73.php www.midominio.com/platos/nombre7paellaEmariscos.php www.midominio.com/platos/nombre7'rroz4Delicias.php Hue en/iar0 internamente el procesamiento de esas p0ginas a estas direcciones: www.midominio.com/codigo/platos7nombre.php1nombre2paella www.midominio.com/codigo/platos7nombre.php1nombre2-'E##'73 www.midominio.com/codigo/platos7nombre.php1nombre2paellaEmariscos www.midominio.com/codigo/platos7nombre.php1nombre2'rroz4Delicias E+emplo 0 de regla htaccess Este es+uema /isto en el anterior ejemplo lo podemos repetir las /eces +ue +ueramos en ()#s +ue tengan una serie de directorios. separados por barras. >er0 algo como esto:
)ewrite)ule ?(YaEz'E[;EW7EZ@!/(YaEz'E[;EW7EZ@!/(YaEz'E[;EW7EZ@!A.htmlB codigo/mascodigo/procesamiento.php1 parametro&2B&Iparametro32B3Iparametro42B4

Esto acepta direcciones +ue tengan tres directorios distintos. uno detr0s de otro. separado claro est0 por las barras. #os nombres de los directorios aceptan n*meros. letras may*sculas y min*sculas y guiones medios y bajos. 'cepta direcciones tan /ariadas como estas: www.midominio.com/&/3/4.html www.midominio.com/lo+uesea/VT)'<V>'/&33.html www.midominio.com/a7b7c7&/'E\E<E3/'Eb7<7W8L.html 6nternamente. htaccess procesar0 esas reglas y redirigir0 a url como estas:
Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n. &4

Tu mejor ayuda para aprender a hacer webs www.desarrolloweb.com

www.midominio.com/codigo/mascodigo/procesamiento.php1 parametro&2&Iparametro323Iparametro424 www.midominio.com/codigo/mascodigo/procesamiento.php1 parametro&2lo+ueseaIparametro32VT)'<V>'Iparametro42&33 www.midominio.com/codigo/mascodigo/procesamiento.php1 parametro&2a7b7c7&Iparametro32'E\E<E3Iparametro42'Eb7<7W8L Artculo por Miguel Angel Alvarez

Editar htaccess para crear direcciones URL amigables: www.desarrolloweb.com/manuales/htaccess-para-urls-amigables.html " #os manuales de DesarrolloWeb.com tienen el copyright de sus autores. $o reproducir sin autorizaci%n.

&: