Capítulo 2. MOD_REWRITE BASICO Como convertir páginas dinámicas en estáticas, con una variable
Capítulo 1 :: Capítulo 2 :: Capítulo 3
MOD_REWRITE BASICO Convertir una página dinámica de una variable
Apache define la directiva MOD_REWRITE como un "caballo de carga", esta puede aparecer varias veces en el archivo de ejecución.
Sintaxis del MOD_REWRITE:
rewriterule <secuencia a encontrar : pattern> <cadena para sustituir : substitution>
Recuerde que el MOD_REWRITE puede ser usado para muchas funcionalidades pero en nuestro ejemplo será usado para convertir páginas dinámicas en páginas web estáticas.Secuencia : Pattern es una expresión regular la cual es aplicada (en la marcha) a la dirección URL actual. La dirección URL actual podría haber cambiado de antemano por la cadena de sustitución, es decir, toda la direccion URL pudiera no ser la misma.
Sintaxis de la expresiones regulares que aplican al MOD_REWRITE
. (punto) cualquier caracter
[chars] no de los caracteres
[*chars] ninguno de los caracteresCuantificadores
? 0 o 1 del texto precedente
* 0 o N del texto precedente
+ 1 o N del texto precedenteAgrupamiento
(texto)
Inicio y fin de la cadena
^ Inicio de la cadena
$ Fin de la cadena\char Escape, se utiliza para sustituir ( ) [ ] los cuales son marcadores
‘ last | L’ es el marcador de la ultima instrucción del MOD_REWRITE y detiene la ejecución.
Caso práctico y ejemplo del MOD_REWRITE
Revisando nuevamemente la dirección URL dinámica que pasa una variable
miprograma.html?mivariable=1
podría representarse como miprograma/cap/1.html y miprograma/cap/2.html ...y asi sucesivamente independientemente del valor que adquiera la variable.
Sentencia: Rewriterule ^miprograma/cap/(.*)\.html$ miprograma.html?mivariable=$1
Análisis de la parte 1 – Cadena a sustituir
^miprograma/cap/(.*)\.html$
Esta es la cadena de salida (output), los caracteres ^ $ son el inicio y el fin de la cadena. miprograma/cap/ es la primer parte de la cadena de salida (string), (.*) representa cualquier carácter del texto. El \ backslash es el caracter de escape, se utiliza para cortar la sustitución del punto, en este caso, no indicará que el . es cualquier caracter, sino que es parte de la dirección .hml (nombre del file).
Análisis de la parte 2 – Cadena a buscar
miprograma.html?mivariable=$1
El MOD_REWRITE busca esta secuencia en cualquier dirección URL y mantiene el valor de la variable en $1, que es pegada en el string de salida (.*), es decir, (.*) se sustituye por el valor de la variable.
El resultado final es una sustitución de caracteres especiales, tales como ? por otros mas fáciles de interpretar por los buscadores (search engines), obteniendo direcciones estáticas y pasando el valor de las variable a la vez, muy útiles en el lenguaje PHP. La dirección URL sustituida será:
miprograma/cap/1.html
MOD_REWRITE CASOS PRÁCTICOS Demo de ejecución del Mod_rewrite
ARCHIVO .htaccess
Las instruciones del MOD_REWRITE deben guardarse en un archivo que debe llamarse .htaccess, puedes crearlo en notepad y transferirlo al servidor y requiere la instrucción de RewriteEngine on. El caso práctico del MOD_REWRITE tiene el siguiente archivo .HTACCESS en el directorio donde se encuentran las páginas .html a ser traducidas con MOD_REWRITE
-----inicio del .htaccess no incluya esta línea----
Options +FollowSymLinks
RewriteEngine on
Rewriterule ^miprograma/cap/(.*)\.html$ miprograma.html?mivariable=$1-----fin del .htaccess no incluya esta línea----
Ejemplo 1 – Página dinámica de ejemplo con una expresión (sin efecto el mod_rewrite)
En este caso simplemente hago la llamada conla siguiente expresión: <a href="miprograma.hhtml?mivariable=1" target="_blank">
Ejemplo 2– Página estática con los valores de mivariable del ejemplo anterior (con efecto del mod_rewrite)
En este caso utilizo una dirección estática, pasando el valor 1 en mivariable: <a href="miprograma/cap/1.html" target="_blank">
Si requiero pasar un valor específico simplemente la incluyo en el valor $1 de la URL estática, que sería: <a href="miprograma/cap/1282.html" target="_blank"> . Revisa las direcciones URL una vez que sigas el enlace a continuación. No sobra decir que en mi lista de directorios no existe la estructura miprograma/cap/ ya que simplemente es una sustitución de valores en la marcha.
Direcciones URL estáticas para los buscadores
Para que los buscadores (search engines) encuentren e indexen mis páginas dinámicas debo utilizar el enlace del ejemplo 2, ya que probablemente las direcciones del ejemplo 1 que incluyen el símbolo ? no resulten atractivas para las arañas y buscadores (spiders, web crawlers).
En el siguiente capítulo 3, incluyo un caso avanzado del MOD_REWRITE, con varias variables.
Capítulo 1: Introducción MOD_REWRITE
Capítulo 3: MOD_REWRITE avanzado con varias variables en PHP
Credits:
Sergio Vargas-Sanabria, para contactar sigue aquí.
Ayuda y Comentarios sobre MOD_REWRITE son bienvenidos!
Comments by anuack - anuack@gmail.com - February 11, 2007, 4:37 pm :sad: Quede en las mismas. No entendi nada de nada.
Normalmente se lleva una variable desde una pagina A.php a la B.php por medio de Get.
En la pagina A.php se coloca el vinculo para que transpase la variable a la pagina B.php
Ejemplo:
b.php?id=<?php echo $row_Recordset1['id']; ?>
La pagina B.php resive la variable en un juego de registro.
Ejemplo:
<?php
$colname_Recordset1 = "-1";
if (isset($_GET['id'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['id'] : addslashes($_GET['id']);
}
mysql_select_db($database_principal, $principal);
$query_Recordset1 = sprintf("SELECT * FROM foro WHERE id = %s", $colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $principal) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
La pagina b.php resive la variable y la muestra por ejemplo b.php?id=valor
b.php?id=2, b.php?id=3, etc.
Lo que no entiendo es como hacen los portales por ejemplo para que quede algo asi.
8 supuestamente seria la pagina. pero no existe realmente.
En portales he visto que imprime o que cada usuario cuenta con su propia pagina
ejemplo:
dominio.com/anuack
dominio.com/pedro
dominio.com/juan
Pero ni pedro, ni juan, ni anuack tiene pagina. Es casi como decir
dominio.com/elcliente?=nombredelcliente
eso queda transformado en portales como
dominio.com/juan
Como puedo hacer esto? :wink: :wink:
Alguna ayuda??
Gracias y saludos desde ColombiaComments by Ruben - rgfellay@yahoo.com.ar - April 3, 2007, 9:53 am Por más que he probado distintas variantes, no logro hacer que funcionen las url estáticas para este tipo de direcciones dinámicas (http://www.trinidadsi.com.ar/lecturas.php?subaction=showfull&id=117560584
2&archive=&start_from=&ucat=1&&) generadas por uso de CuteNews en mi sitio.
Ya he verificado, y está todo ok en mi servidosr para el uso de mod_rewrite, y el archivo .htaccess es leído correctamente.
Podrán ayudarme?
Muchas Gracias,
Ruben, ArgentinaComments by jonn1 - email@gmail.com - February 7, 2010, 8:09 am comment2, http://www.metacafe.com/f/channels/Tadalafil/ tadalafil 20mg india, xof, Comments by jonn3 - email@gmail.com - February 7, 2010, 5:23 pm comment3, http://messages.yahoo.com/Health_%26_Wellness/Drugs_and_Medications/threadview?m=tm&bn=18077909%23anxietydepress
ionmedications&tid=3135&mid=3135&tof=1&frt=2
cheap paroxetine 20mg, >:)), http://messages.yahoo.com/Health_%26_Wellness/threadview?m=tm&bn=8313121&tid=1773&mid=1773
&tof=1&frt=2 buy cheap tadalafil, =-[[[, http://www.azcentral.com/members/Blog/Pharmacy/73090 prednisone 20mg no prescription, jrydgm, http://www.jetphotos.net/members/viewprofile.php?id=50868 zolpidem 10mg tab, qvnoj, http://www.jetphotos.net/members/viewprofile.php?id=50869 buy lorcet 10 650 online, 1717,Comments by jonn2 - email@gmail.com - February 7, 2010, 7:00 pm comment4, http://www.voip-info.org/users/view/ionamin ionamin without a prescription, 0045, http://www.voip-info.org/users/view/viagra_over_the_counter viagra over the counter canada, 56635, http://www.ldonline.org/roles/28729 buy omeprazole, 064, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=499 buy cheap tricor, 841, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=500 cheap proscar, 8-]], Comments by jonn2 - email@gmail.com - February 8, 2010, 12:39 am comment3, http://www.panoramio.com/photo/31791111 ventolin no prescription, =], http://www.panoramio.com/photo/31791246 buy colchicine online no prescription, 604851, http://www.glumbert.com/profile/alprazolam buy cheap alprazolam, rluht, http://www.wirelessrerc.gatech.edu/SOT/sot-wireless-emergency-communication-forum/thad-starner-wireless-rerc-answers-questions
-from-the-audience/804976484 buy vicodin without prescription online, 1669, http://www.wirelessrerc.gatech.edu/SOT/sot-wireless-emergency-communication-forum/thad-starner-wireless-rerc-answers-questions
-from-the-audience/804976485 cheap hydrocodone no prescription, fxcgw,Comments by jonn1 - email@gmail.com - February 8, 2010, 6:22 am comment2, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1340 buy accutane online without a prescription, =-P, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1341 buy metronidazole online without prescription, jpj, http://www.azcentral.com/members/Blog/Pharmacy4you/73416 buy amoxicillin without a prescription, 36568, http://www.voip-info.org/users/view/clonazepam order clonazepam without prescription, >:-OO, http://www.voip-info.org/users/view/klonopin generic klonopin 2mg, 811315, Comments by jonn1 - email@gmail.com - February 9, 2010, 2:24 am comment3, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1360 buy meloxicam 15 mg tab, =-OOO, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1505 ativan overnight, 82645, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1506 lorazepam 1mg tablets, >:]]], http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1509 xanax online without a prescription, 8(((, http://moo.nac.uci.edu/bioBB/viewtopic.php?f=2&t=1510 codeine without prescription, 5586,
Deja tu comentario aqui!
Notas sobre Mod_rewrite básico
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 persistente de datos de sitios dinámicos Servicio de rastreo y recuperación de información de sitios o páginas web.
Sergio Vargas-Sanabria © 2005
PeopleSoft and Oracle JDEdwards OneWorld XE are trademarks registered by their respective owners.
Capítulo 2 MOD_REWRITE BASICO Convertir una página dinámica de una variable