Comunidad de diseño web y desarrollo en internet online

Pasar Variable php con Rewrite

Citar            
MensajeEscrito el 04 Mar 2008 02:48 pm
Hola a todos, llevo varios días con el mismo tema y no progreso. Quiero pasar url dinámicas a estáticas pero tengo problemas para pasar las variables. Voy a poneros un ejemplo a ver si alguien me puede pegar un empujón.

Tengo dos paginas, un index.php donde mostrare el previo de todas las noticias y después un archivo llamado noticia.php donde voy a mostrar el texto completo de la noticia.

Mi idea es en la url en vez de salir noticia.php?idnoticia=1 quiero que salga titulo-de-la-noticia.html. Pero configuro el rewrite, me crea bien la url pero la variable no la recibe la pagina noticia.php y entonces no muestra ningun noticia. Aquí tenéis el código de cada pagina,


Archivo index.php

Código :

<?
include("dinamic/conex_as.php");

$conexion=mysql_connect($host,$usuario_db,$pass_usuario_db);
$seldb=mysql_select_db($basedatos);

//Hago la consulta
$sop = "SELECT * FROM noticias ORDER BY idnoticia ";
//Guardo el resultado
$result = mysql_query($sop);
while ($lista = mysql_fetch_array($result)){ 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<a href="<?=$lista["url"];?>"><?=$lista["titulo"];?></a>
</body>
</html>
<?
}
mysql_close($conexion);
?> 


Archivo noticia.php

Código :

<?
include("dinamic/conex_as.php");

$conexion=mysql_connect($host,$usuario_db,$pass_usuario_db);
$seldb=mysql_select_db($basedatos);

//Hago la consulta
$sop = "SELECT * FROM noticias WHERE url=".$_GET["url"]." ";
//Guardo el resultado
$result = mysql_query($sop);
while ($lista = mysql_fetch_array($result)){ 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?=$lista["titulo"];?></title>
</head>

<body>


<?=$lista["titulo"];?>




</body>
</html>
<?
}
mysql_close($conexion);
?>


Archivo .htaccess

Código :

RewriteEngine on 

RewriteRule ^(.*)-(.*)\.html$ noticia.php?idnoticia=$1 

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ /noticia.php?url=$1 [QSA]


Un saludo y gracias.

Por kk0rps

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Mar 2008 03:49 pm

Código :

RewriteEngine on 



# Aqui tienes dos coincidencias($1 y $2) pero solo usas $1. Segun tu ejemplo
# "titulo-de-la-noticia.html." esta expresion hara coincidencia con
#$1=titulo y $2=de-la-noticia
RewriteRule ^(.*)-(.*)\.html$ noticia.php?idnoticia=$1  [L]

# Para que vuelves a activar el motor de mod.rewrite?
RewriteEngine on  

#Ni idea que haces aqui pero veo peligroso lo que intentas hacer
#esto coincide con todo lo que pudo haber fallado en las reglas anteriores

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f


RewriteRule ^(.*)$ /noticia.php?url=$1 [QSA]

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 04 Mar 2008 04:09 pm
Perdón, insertado mal el código del rewrite, actualmente lo tengo de esta forma,

Código :

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ /noticia.php?url=$1 [QSA]

Por kk0rps

1 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.