Ayuda de mod_rewrite para crear paginas estaticas

 

Capítulo 3. MOD_REWRITE AVANZADO Como convertir páginas dinámicas en estáticas, pasando muchas variables en PHP

Capítulo 1 :: Capítulo 2 :: Capítulo 3Lunarpages hospedaje php jsp asp perl 3000 en disco 40 Gigabytes transferencia 999 cuentas de correo

MOD_REWRITE AVANZADO Convertir una página dinámica con muchas variables en PHP

Continuando con la secuencia de ejemplos en PHP, utilizo casos reales de páginas web dinámicas. El programa PHP o "script" utilizado en este demo, realiza una interfase con el buscador Gigablast para retornar búsquedas automáticas y requiere de varias variables. La página HTML es recursiva, es decir que se regenera con las variables que recibe.

MOD_REWRITE utilizado para transformar las direcciones URL dinámicas:Yaaqui.com Directorio Global y Regional en español para sugerir sitios

EJEMPLO 1

En este ejemplo se utilizan 4 variables que se detallan a continuación

$n = 20 // número de resultados a retornaren la búsquedaPeoplesoft Oracle E1 CNC Technical Support for EnterpriseOne
$s = 0 // empezar el despliegue en la posición s
$t = 3 // esta opción despliega o oculta enlaces
$plus = 'ballet' // estas son las palabras a buscar

 

.HTACESS REWRITE RULE PARA ESTE EJEMPLO

Esta es el MOD_REWRITE de ejemplo para lograr la dirección estática

RewriteRule ^([^/]+)-([^/]+)-([^/]+)-([^/]+)\.html$ /search/ballet_dance_search.html?plus=$1&n=$2&s=$3&t=$4

Parte 1 – Cadena a sustituir ^([^/]+)-([^/]+)-([^/]+)-([^/]+)\.html$

cada secuencia ([^/]+) adquiere el valor de cada una de las variables, y determina el rango de caracteres a sustituir, tal y como está explicado en el capítulo 2 MOD_REWRITE básico. La dirección estática convertida será:

/search/Ballet-20-0-3.html

Parte 2 - Cadena buscar /search/ballet_dance_search.html?plus=$1&n=$2&s=$3&t=$4

Las variables son $1, $2, $3, $4 que serán sustituídas sison encontradas en la secuencia espeficada en la Parte 1.

 

Ejemplo 1 Página Dinámica La instrucción para llamar la página dinámica sería tal y como se especifica a continuación, la cual no publico para no obtener páginas duplicadas, lo cual es muy penalizado por los buscadores. Si la desea probar utiliza copiar y pegar en tu browser:

http://vialin.com/search/ballet_dance_search.html?plus=ballet&n=20&s=0&t=3

Verifica la dirección URL dinámica resultante despúes de seguir la dirección anterior, la cual resulta ser un URL muy complicada para los buscadores.

 

Ejemplo 2 Página Estática La instrucción para llamar la página estática es:

/search/Ballet-20-0-3.html

Verifica la dirección URL dinámica resultante despúes de seguir este enlace. Nota que las dos direcciones son válidas pero la dirección del ejemplo 2 es probable que sea indexada. No así la dirección del ejemplo 1.

 


Capítulo 1: Introducción MOD_REWRITE

Capítulo 2: MOD_REWRITE básico


 

Credits:

Sergio Vargas-Sanabria, para contactar sigue aquí.

 


Ayuda y Comentarios sobre MOD_REWRITE conceptos avanzados son bienvenidos!

Lunarpages hosting hospedaje php jsp asp perl 3000 en disco 100 Gigabytes transferencia cuentas de correo ilimitadas

Comments by Juanfra - juanfraa@gmail.com - June 3, 2005, 7:01 pm
Tengo problemas al querer poner mas de una rewriterule, solo me identifica la primera. cual puede ser el problema?
Comments by Sergio - none - July 6, 2005, 1:13 pm
Juanfra, la razón principal es que la dirección URL ya ha sido modificada para cuando encuentre la seguna entrada del Mod "rewriterule". En mi caso tuve que escribir dos líneas para el rewriterule una con la URL original y la segunda tomando en cuenta que se modificó.

La segunda razón es que encuentra un carácter de fin de sentencias de mod rewriterule. El fin de sentencia del mod rewriterule es: [L]
verifica que no lo tienes al final de la primer línea.

Para ilustrar el primer caso, tuve que incluir dos entradas parecidas a estas, la primera toma en cuenta la dirección url original y la segunda es la modificada.

RewriteRule ^pag/([^/]+)-([^/]+)-([^/]+)-([^/]+)\.html$ /dir1/search.html?plus=$1&n=$2&s=$3&t=$4 [NC,NE]
RewriteRule ^pag/([^/]+)-([^/]+)-([^/]+)-([^/]+)\.html$ /search/dir/dir_search.html?plus=$1&n=$2&s=$3&t=$4 [NC,NE,L]

Espero que te ayude.
Comments by Sergio - none - October 9, 2005, 7:42 am
Caso: como crear una dirección estática e incluir el tema o título en el URL

La pregunta la dirige Daniel desde Argentina que corre un sitio de poemas, su problema es eliminar las direcciones dinámicas pero a la vez quiere incluir el título del poema en la dirección URL usando modrewrite

La lista de poemas se encuentra aquí
http://www.tuamorcito.com/poemas_de_amor_0_100.php

La dirección de cada entrada de la lista se encuentra en una dirección dinámica de una variable:

http://www.tuamorcito.com/mostrar_poema.php?vid=787

El objetivo es lograr una dirección estática en el formato
poema787.html

Descripcion del Archivo .htaccess
-----------------
RemoveHandler .html .htm
AddType x-httpd-php .php .htm .html
Options +FollowSymLinks
RewriteEngine on
Rewriterule ^poema(.*)\.html$ mostrar_poema.php?vid=$1
-----------------

Las primeras dos lineas indican que se ejecute codigo php desde paginas con extension .html
La ultima linea hace la transformacion de la direccion estatica.

Modificacion del script PHP para que llame la nueva dirección estática
La siguiente sentencia es la original:
---------
mostrar_poema.php?vid=$tabla1[$i]
---------
La debemos modificar a:
---------
poema$tabla1[$i].html
---------
Listo, ahora vamos a incluir el texto del nombre de la entrada en la dirección estática pero antes debemos remover caracteres especiales ascii y basura para que la dirección se vea algo así: poema-781-que-es-el-amor.html

La siguente rutina en PHP se encarga de remover los caracteres especiales y ponerle guiones entre palabras (-), donde $variable_sin_codificar contiene caracteres especiales

---------------------------------
// elimina caracteres especiales
$url = strtolower($variable_sin_codificar);
$find = array(' ',
'&',
'\r\n',
'\n',
'+');
$url = str_replace ($find, '-', $url);
$find = array('/[^a-z0-9\-<>]/',
'/[\-]+/',
'/<[^>]*>/');
$repl = array('',
'-',
'');
$url = preg_replace ($find, $repl, $url);
----------------------------------

Finalmente desplegamos la variable $url en la dirección estática
----------------------------------
poema$tabla1[$i]$url.html
----------------------------------

y listo tenemos direcciones estáticas con el tema, título o texto en la dirección URL

http://www.tuamorcito.com/poema-781-que-es-el-amor.html
Comments by Daniel - danielmarcovich@hotmail.com - October 22, 2005, 5:17 pm
Hola a todos quisiera saber si es a mi o todos que le sucede el caso es que cuando he creado las paginas html mediante la explicacion que Sergio a dado me sale junto el idsesion quiero saber si a todos les sale o si existe alguna forma de quitarlo. Muchas Gracias
Comments by kdk - kdk@sinmonto.com - November 14, 2005, 9:35 pm
hola sergio me parecio exelente tu explicacion pero tengo esta duda

resulta que estoy creando un fotolog y el usuario originalmente se muestra index.php?usuario=yo
y con el rewrite le pongo asi:
RewriteRule ^(.*)$ index2.php?usuario=$1 [L,QSA]
y lo dejo en www.miweb.cl/yo

funciona OK
pero resultan las siguientes cosas.

el index no carga todo lo que deberia cargar como lo hace si pongo la original (index.php?usuario=yo) por ejemplo el fondo fotos etc...

sucede tambien que al poner esto como en la raiz osea en general, no puedo mostrar el index de la web o el .cl/registro.php porque lo agarra como si fuese un usuario

que se hace en estos casos?? espero que me ayudes ya q llevo artos dias buscando alguna respuesta

Saludos!!!
:smile:
Comments by post it on cutephp - non@none.com - December 17, 2005, 2:57 am
can you please post thsi on the cuter site in english
Comments by Adolfo - info@todopozuelo.com - February 24, 2006, 5:40 am
Tengo un portal en PHP cuyos resultados provienen de varias bases de datos.
Estoy haciendo pruebas introduciendo un archivo .htaccess con el que gracias al mod rewrite puedo convertir url largas por otras más cortas

En el siguiente ejemplo es perfecto para lo que yo quiero. El problema es que al tener más o menos 50 provincias x 50 actividades en las bases de datos, tendría que hacer 2500 "rewriterule" y pienso que tiene que existir la siguiente solución:

En la URL real, están las dos variables que van cambiando para definir actividad ( actividad=30 ) y provincia ( provincia%3D20 ) que es lo único que necesito, independientemente de la zona y demás.

Por lo tanto pienso que tiene haber una manera de indicar en el htaccess que cuando aparezca actividad 30 escriba el nombre de la actividad ( ferretería ), cuando aparezca 12 escriba por ejemplo fontaneros y así sucesivamente y lo mismo con las provincias.

URL REAL:
http://www.mi_dominio.com/buscar.php?empresa=Empresa+o+Profesional&act
ividad=30&provincia=minibuscador.php%3Fidpro
vincia%3D20&zonas=113&imageField3.x=23&image
Field3.y=7

RESULTADO OBTENIDO:
http://www.mi_dominio.com/ferreterias_granada.htm

HTACCESS:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ferreterias_granada(.*)\.htm$
buscar.php?empresa=Empresa+o+Profesional&act
ividad=30&provincia=minibuscador.php%3Fidpro
vincia%3D20&zonas=113&imageField3.x=23&image
Field3.y=7=$1

Muchas gracias.
Comments by Nanomedia - aial77@hotmail.com - May 2, 2006, 3:15 am
Hola, estoy muy agradecido contigo por la muy oportuna y lograda informacion que nos has presentado,tengo una duda tengo un servidor Apache con una direcion ip 000.000.000.000 donde se direciona un dominio xxx.com y en mi servidor este dominio abrira la pagina en mi servidor xxx.com/index.pagina1 pero tengo otro dominio yyy.com que direcionara a mi misma ip 000.000.000.000 pero que tendra que habrir en mi servidor el archivo yyy.com/index.pagina2, mi pregunta, ¿se puede direccionar al archivo correspondiente para cada dominio mediante el htaccess? y si se puede ¿cual seria el codigo?, en resuminas cuentas tengo dos paginas en un mismo servidor Apache con su correspondiente dominio, que cada vez que se llame al dominio tiene que direccionar al archivo correspondiente, de nuevo mil gracias.
Comments by Julio Roberto - laberintojr@hotmail.com - May 3, 2006, 1:21 pm
Quiero saber como le hago para eliminar una pagina de mi historial
la pagina el www.centroerotica.com ya lo intente todo les agradeceria mucho su ayuda pueden escribirme a laberintojr@hotmail.com
Comments by Carlos Vasconelos - P_olin@hotmail.com - October 11, 2006, 1:56 pm
Excelente, este tutorial si me sirvio, y estuve buscando varios, gracias... :laughing:
Comments by Sergio II - none - November 23, 2006, 9:59 am
:crying: solo acepta 9 variables $1 a $9
Comments by jya - none - December 21, 2006, 6:19 am
:crying:Saludos, desearia que alguien me apoyara con informacion a cerca de como usar MOD_Rewrite para indexar en buscadores contenido dinamico.

Se agradece de antemando.
Comments by Seba - sriquel@hotmail.com - June 25, 2007, 6:51 pm
FUNDAMENTAL!!!solo con generar las reglas en .htacces no va a andar algo que se omite en casi todos estos articulos es que luego debemos cambiar los enlaces a estaticos en nuestros archivos del sitio osea como en el ejemplo de uno de los comentarios del cap 3:
MODIFICAR el archivo PHP para que llame la nueva dirección estática
La sentencia original:
mostrar_poema.php?vid=$tabla1[$i]
---------
Se cambia por ej a:
---------
poema$tabla1[$i].html

espero se entienda.
Saludos.
Comments by Alejandro - correo@pixelmod.net - July 1, 2007, 5:14 pm
Hola, podrían ayudarme? Tengo esta url:
//zonapruebas.pixelmod.net/index.php?mod=articulo&idioma=es

y quisiera que quede asi:

//zonapruebas.pixelmod.net/articulo-es/

para la primera variable lo pude hacer..

pero se me complica al agregar la 2ª , la del idioma.

Este es el .htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.+)\/$ /index.php?mod=$1
RewriteRule ([^/]+)-([^/]+)\/$ /index.php?mod=$1&idioma=$2

ya leí el 2º comentario de Sergio, pero no lo entiendo del todo bien.
Saludos

Mod_rewrite_cap_3 iconEscribe tus comentarios y notas aquí!
Ayuda y comentarios acerca del mod_rewrite avanzado
21 Apr 2005

 

Más scripts y programas gratis para WebMasters:

Ejecutar código PHP in páginas .HTML Como crear páginas HTML que corran código PHP

PHP para ocultar email o texto no permite que el email o coreo electrónico que sea rastreado por buscadores

Extracción de datos persistentes de sitios dinámicos Servicio de rastreo y ercuperación de información de sitios o páginas web.

 


Yaaqui Barra de Herramentas traduce busca en enciclopedia        Lunarpages hospedaje php jsp asp perl 3000 en disco 40 Gigabytes transferencia 999 cuentas de correo


 

|          Contact         |

Request a Quote     | CNC Qualifications         | Links and Resources

 Sergio Vargas-Sanabria © 2005

PeopleSoft and Oracle JDEdwards OneWorld XE are trademarks registered by their respective owners.

Capítulo 3. MOD_REWRITE AVANZADO Como convertir páginas dinámicas en estáticas, pasando muchas variables en PHP