browser lang:en
1 ¿Qué hace el mod_rewrite?
El mod_rewrite configura su servidor apache para garantizar que las páginas dinámicas (en este caso php) van a cambiar completamente y la extensiónes parecen páginas html
2 ¿Qué es la transformación de estática a dinámica?
Esta transformación sirve para asegurarse de que su página está mejor tratada por un motor de búsqueda. Un motor de búsqueda podría tener algunas dificultades para seguir un enlace tal que así:
código:
http://www.ejemplo.es/index.php?page=noticias&id=69
Así, a través de la reescritura de la URL puede transformar lo anterior enlace a una página como esta:
código:
http://www.ejemplo.es/index/noticias/69.html
Una página de este tipo os aseguro, es mejor visto por los motores de búsqueda (Google primero)
Yo en este caso he utilizado 2 variables en mi url en php:
* page * Página
* id * Id
Es evidente que cuanto más alto es el numero de variables, más bajo serà la importancia para su página en motor de búsqueda.
3 ¿Cómo puedo asegurarme de que mi apache acepte la reescritura?
- A Para hacer esto debes cargar un módulo llamado mod_rewrite de apache
mod_rewrite.c
Para hacer esto debes ir en el archivo de configuración de apache: httpd.conf y descomentar las siguientes líneas:
código:
LoadModule rewrite_module modules/mod_rewrite.so LoadModule rewrite_module modules / mod_rewrite.so
AddModule mod_rewrite.c AddModule mod_rewrite.c
Una vez que se han hecho reiniciar Apache.
- B - Intente ejecutar un archivo escrito en:
Código PHP:
phpinfo();
4 OK en mi servidor se está ejecutando el servicio ¿qué debo hacer?
Luego, en el supuesto de que el rewrite ejecute en ordenadores con Windows OS y Linux (yo en local lo hice en los dos y sin problemas) hay què crear un archivo llamado .htaccess.
Dentro de este archivo tendremos que escribir la regla que queremos nuestro servidor web interprete.
Permítanme 3 ejemplos de lo que se puede hacer (quien es más inteligente de mí, y no es dificil, con expresiones regulares puede hacer milagros):
* * * Ejemplo 1 * * *
Si por ejemplo utilizando el sistema en plantillas php puesta a disposición por este sitio:
ARTÍCULO AQUÍ: http://www.holyguard.net/noticias/id_582/idcat_31/pro.html
Estamos en páginas dinamicas como esta:
código:
http://www.holyguard.net/index.php?page=noticias&id=582&cat=31
¿Qué significa esto?
Esto significa que estamos utilizando 2 páginas y 3 variables:
En este caso el código php que llama desde la primera pagin serà una cosa más o menos similare a esto
Código PHP:
$p="main"; //por defecto la página de Contenido Central
if(isset($_GET['page'])){ //pagina emviada via parametro
$p=$_GET['page'];
if($p!=basename($p) || !preg_match("/^[A-Za-z0-9-_]+$/",$p) || $p=="index" || !file_exists($p.".php"))
$p="error"; //pagina de error
}
include($p.".php");
Es decir, incluir las páginas que se transmiten a través de la página variable $ (?page = nombrepagina) en la página que está viendo
Y luego hay noticias.php la página que recibe los valores de la variable $ id (&id =) y el uso más o menos como esta:
codice PHP: Código PHP:
$query = mysql_query("Select * from noticias where id='$_GET[id]'");
Entonces tendrás la URL dicha anteriormente:
código:
http://www.sitio.com/index.php?page=noticias&id=69
Pero pronto la trasformamos en una página como esta:
código:
http://www.sitio.com/index/noticias/69.html
Para hacer esto no tendrás otra alternativa que la de escribir la siguiente regla en .htaccess:
código:
RewriteEngine On
RewriteRule ^index/([^/]+)/([^/]+).html index.php?page=$1&id=$2 [L]
Y esto permite hacer la transformación como en el vínculo anterior
* * * Ejemplo 2 * * *
Mi sitio tiene sólo una variable en la URL como la siguiente:
código:
http://www.sitio.com/noticias.php?id=69
Como tendria què ser mi regla para el archivo .htaccess?
código:
RewriteEngine On
RewriteRule ^notizie/([^/]+).html noticias.php?id=$1 [L]
Questa mi permetterà di trasformare la pagina in Esto me permitirá pasar la página
codice: código:
http://www.sito.com/notizie/69.html
* * * 3 EJEMPLO * * *
Esto no difiere mucho de los primeros 2, pero sólo sirve para dejar claro de amplia útilizacion que podemos hacer con la reescritura:
Supongamos que yo uso la clase fpdf para crear los archivos en formado .pdf
Para ello vamos a tener dentro de las páginas una consulta con base de datos para extrapolar los datos y, a continuación, las diversas instrucciones a la clase:
Código PHP:
$query = mysql_query("Select * from noticias where id='$_GET[id]'");
//............. etc etc
//incluimos la classe
require('fpdf.php');
$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Image('img/logo.jpg', 50, -10, 105, 48);
$pdf->SetTextColor(255,080,100);
$pdf->write(8, " $titulo\n\n");
$pdf->SetTextColor(0,0,0);
$pdf->write(8, "-Autor: $autore\n\n");
$pdf->write(8, "Texto: $texto\n");
Para recuperar el archivo en formato pdf escribimos una dirección URL de este tipo aquí:
código:
http://www.sitio.com/pdf_noticias.php?id=69
Ademas a través de mod_rewrite podemos crear un falso (o como falsa redireccion) archivo pdf:
código:
http://www.sitio.com/pdf_noticias/69.pdf
Para todos los efectos, parece realmente un archivo pdf nunca más sería pensar que en realidad es una página en php
Para lograr esto es suficiente escribir en mod rewrite el siguiente:
codice: código:
RewriteEngine On
RewriteRule ^pdf_notizie/([^/]+).pdf pdf_notizie.php?id=$1 [L]
simplemente cambiar la extensión en la regla.
Un poco más sofisticado sería utizzare cosa en la URL como la siguiente:
código:
http://www.sitio.com/noticias/69-titulo-noticia.html
Esto es (lo que he leído en el último mes en los motores de búsqueda de este foro y por lo que he visto en los diversos organismos SEO = motor de búsqueda optimizado) para què los modores de busqueda leen nuestras páginas.
La regla de que tenemos que usar es siempre la misma:
código:
RewriteEngine On
RewriteRule ^notizie/([^/]+).html notizie.php?id=$1 [L]
Sin embargo, en tu página php (es decir, noticias.php) use el comando explode
Código PHP:
$pagina = $_GET[id];
$divisore = explode("-", $pagina);
$id = $divisore[0];// devuelve el numero que tienes antes de -
$query = mysql_query("Select * from noticias where id='$id'");
Espero que lo que es explicado de manera clara y que podría ser útil (perdonais mi castellano)
¿Qué es ALSA (Advanced Linux Sound Architecture)? Advanced Linux Sound Architecture (conocido por el acrónimo ALSA) es un componente…
in:Blog (0 comentarios)Con estas filas de codigo podemos solucionar el problema UTF-8 en Php //Realizamos la conexion con…
in: (0 comentarios)aquì una snippet rapida para averiguar si un campo existe en una tabla mysql: codice PHP: if ( mysql_num_rows(mysql_query("SHOW COLUMNS…
in:MySql (0 comentarios)Acabo de recebir un link desde una de las webs mas interesantes y visitadas de españa (y de…
in:Blog (0 comentarios)Presente en Mozilla Firefox desde hace mucho tiempo, con la nueva versión de Microsoft Internet Explorer 7 esta…
in:Scripts (0 comentarios)Gracias a una comunicaciòn de David Benito, SEO de solmelia.com, justo ahora he descubierto las nuevas implementaciònes de…
in: (0 comentarios)Escribir html en un div con javascript, como? En esta manera. Codigo: function WriteLayer(ID,parentID,URL) { if…
in:Scripts (1 comentarios)Cursos gratis de Informatica
in:Enlaces Utiles (0 comentarios)
