Ayuda de mod_rewrite para crear paginas estaticas

Lunarpages hospedaje php jsp asp perl 3000 en disco 40 Gigabytes transferencia 999 cuentas de correo

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 variableYaaqui.com Directorio Global y Regional en español para sugerir sitios

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>Oracle E1 JDEdwards Peoplesoft technical support  and CNC support


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 caracteres

Cuantificadores

? 0 o 1 del texto precedente
* 0 o N del texto precedente
+ 1 o N del texto precedente

Agrupamiento

(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">

mivariable = 1

mivariable = 1282

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.

mivariable = 1

mivariable = 1282

 

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, 5: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 Colombia
Comments by Ruben - rgfellay@yahoo.com.ar - April 3, 2007, 10: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, Argentina

Mod_Rewrite_Cap_2 iconDeja 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.

 

 


 

|          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 2 MOD_REWRITE BASICO Convertir una página dinámica de una variable