Foros del Web » Programando para Internet » PHP »

Problema con url amigables

Estas en el tema de Problema con url amigables en el foro de PHP en Foros del Web. Hola buenas, pueden ayudarme? llevo 3 días intentando hacer amigables las url de mi web. He creado un archivo htaccess de esta manera: RewriteEngine on ...
  #1 (permalink)  
Antiguo 21/04/2016, 17:12
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Problema con url amigables

Hola buenas, pueden ayudarme? llevo 3 días intentando hacer amigables las url de mi web.
He creado un archivo htaccess de esta manera:

RewriteEngine on
Options -Indexes +FollowSymLinks
RewriteBase /webdeprueba/

RewriteRule ^(.*).html$ vestidos_ver.php?vestidos=$1

#http://127.0.0.1/webdeprueba/vestidos_ver.php?vestidos=1
#http://127.0.0.1/webdeprueba/vestidos-de-novia.html

Me aparece la página, pero no me aparece la imagen, ni la descripción ni nada. es decir dentro del archivo vestidos_ver.php me aparece todo menos este apartado:

<?php
if ($_GET["vestidos"] == 1) {echo "<h1>Vestidos de novia</h1>";}
?>

<?php do { ?>
<div class="portfolio1"><a href="images/vestidos/<?php echo $row_DatosVestidos['strImagen']; ?>" rel="prettyPhoto[temporadas_galeria]"><img src="images/vestidos/<?php echo $row_DatosVestidos['strImagen']; ?>" width="200" height="250" alt="<?php echo utf8_encode ($row_DatosVestidos['strTitulo']); ?>" /><br />
<strong><?php echo utf8_encode ($row_DatosVestidos['strTitulo']); ?></strong>
<?php } while ($row_DatosVestidos = mysql_fetch_assoc($DatosVestidos)); ?>

Por qué no me salen esos datos? he probado editar de muchas maneras el htaccess y esa que he puesto ha sido la única que más menos me aparece algo, pero claro imagino que algo le falta.
  #2 (permalink)  
Antiguo 21/04/2016, 17:50
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Sonrisa Respuesta: Problema con url amigables

Mira la siguiente linea.
Código htaccess:
Ver original
  1. RewriteRule ^(.*).html$ vestidos_ver.php?vestidos=$1

Primero tienes un error y es que tienes que escapar el punto(\.), porque significa "cualquier carácter", prueba reemplazarlo por esto:
Código htaccess:
Ver original
  1. RewriteRule ^(.*)\.html$ vestidos_ver.php?vestidos=$1

Ahora mira esta linea.
Código PHP:
Ver original
  1. if ($_GET["vestidos"] == 1) {echo "<h1>Vestidos de novia</h1>";}

Por lo que veo $_GET["vestidos"] recibiría algo como "vestidos-de-novia" y creo que estas confundiendo el $1 del htaccess por un valor 1. Esa linea tendría que ser como un isset($_GET["vestidos"]).

** $_GET["vestidos"] recibe "vestidos-de-novia".
** Tienes que hacer un while ($row_DatosVestidos = mysql_fetch_assoc($DatosVestidos)){...} y no un do{}while(); porque en el primer ciclo no tendrá ningún valor.

Más que eso no te puedo ayudar porque no esta la consulta y esta muy desordenado
  #3 (permalink)  
Antiguo 21/04/2016, 18:24
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Problema con url amigables

Hola gracías he probado como me has dicho modificando el RewriteRule, pero no ha hecho ningún cambio.

Lo segundo es que el 1 me indica el apartado del menú donde están los vestidos de novia. del menú vestidos la subcategoría de novias es la 1, envié sólo el if de la subcategoría 1 porqué es con la que he probado sólo.
El do while lo tengo porqué en la misma página aparecen varios listados de vestidos. Te envio el código completo de la página porque me explico muy mal y seguro que viéndolo lo vas a entender mejor :D




<?php require_once('Connections/conexionwebdeprueba.php'); ?>
<?php
if (!function_exists("GetSQLValueString"))
{
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$varVestidos_DatosVestidos = "0";
if (isset($_GET["vestidos"]))
{
$varVestidos_DatosVestidos = $_GET["vestidos"];
}
mysql_select_db($database_conexionwebdeprueba, $conexionwebdeprueba);
$query_DatosVestidos = sprintf("SELECT * FROM tblvestidos WHERE tblvestidos.intSeccion = %s ORDER BY tblvestidos.intOrden ASC", GetSQLValueString($varVestidos_DatosVestidos, "int"));
$DatosVestidos = mysql_query($query_DatosVestidos, $conexionwebdeprueba) or die(mysql_error());
$row_DatosVestidos = mysql_fetch_assoc($DatosVestidos);
$totalRows_DatosVestidos = mysql_num_rows($DatosVestidos);
?>


<!-- InstanceBegin template="/Templates/plantillabase.dwt.php" codeOutsideHTMLIsLocked="false" --><!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang=""> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang=""> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9" lang=""> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang=""> <!--<![endif]-->

<head>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<!-- InstanceBeginEditable name="doctitle" -->


<?php

if ($_GET["vestidos"] == 1) {echo "<title>Vestidos de novia | Corte sirena, corte princesa, etc...</title>";}

if ($_GET["vestidos"] == 2) {echo "<title>Vestidos de fiesta | Cortos, largos, asim&eacute;trico, etc...</title>";}

if ($_GET["vestidos"] == 3) {echo "<title>Vestidos de quinceañera | Corte princesa, halter, con encajes, etc...</title>";}

if ($_GET["vestidos"] == 4) {echo "<title>Vestidos de promoción | Con escote, modernos, con aberturas, etc...</title>";}

if ($_GET["vestidos"] == 5) {echo "<title>Vestidos de noche | Atrevidos, elegantes, minivestidos, etc...</title>";}

if ($_GET["vestidos"] == 6) {echo "<title>Vestidos de graduación | A la moda, marcando tendencias, etc...</title>";}

?>

<script src="js/jquery-1.6.1.min.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="css/prettyPhoto.css" type="text/css" media="screen" charset="utf-8" />
<script src="js/jquery.prettyPhoto.js" type="text/javascript" charset="utf-8"></script>


<!-- InstanceEndEditable -->
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
<link href="css/estiloprincipal.css" rel="stylesheet" type="text/css" />
<link rel="stylesheet" href="css/menu.css" type="text/css" />
<link rel="stylesheet" href="css/main.css">
<link href='https://fonts.googleapis.com/css?family=Noto+Serif:400,700&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<link href='https://fonts.googleapis.com/css?family=Roboto+Condensed:400,300italic&subset=l atin,latin-ext' rel='stylesheet' type='text/css'>

<script src="js/vendor/modernizr-2.8.3-respond-1.4.2.min.js"></script>

<?php include("includes/google.php"); ?>
</head>

<body>

<div class="header-container">
<header class="wrapper clearfix">
<?php include("includes/cabecera.php"); ?>
<nav>
<?php include("includes/menu.php"); ?>
</nav>
<!-- InstanceBeginEditable name="EditRegion5" --><?php include("includes/publicidadl.php"); ?><!-- InstanceEndEditable --> </header>
</div>

<div class="main-container">

<div class="sidebar1"><!-- InstanceBeginEditable name="Contenidoizquierda" -->
<script type="text/javascript" charset="utf-8">
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto({theme: 'dark_rounded'});
});
</script>


<?php
if ($_GET["vestidos"] == 1) {echo "<h1>Vestidos de novia</h1>";}
if ($_GET["vestidos"] == 2) {echo "<h1>Vestidos de fiesta</h1>";}
if ($_GET["vestidos"] == 3) {echo "<h1>Vestidos de quinceañera</h1>";}
if ($_GET["vestidos"] == 4) {echo "<h1>Vestidos de promoción</h1>";}
if ($_GET["vestidos"] == 5) {echo "<h1>Vestidos de noche</h1>";}
if ($_GET["vestidos"] == 6) {echo "<h1>Vestidos de graduación</h1>";}
?>

<p>¿Buscan vestidos de novia, vestidos de fiesta, vestidos de noche o vestidos de 15 años? De un paseo por esta sección y disfrute.</p>



<?php do { ?>
<div class="portfolio1"><a href="images/vestidos/<?php echo $row_DatosVestidos['strImagen']; ?>" rel="prettyPhoto[temporadas_galeria]"><img src="images/vestidos/<?php echo $row_DatosVestidos['strImagen']; ?>" width="200" height="250" alt="<?php echo utf8_encode ($row_DatosVestidos['strTitulo']); ?>" /><br />
<strong><?php echo utf8_encode ($row_DatosVestidos['strTitulo']); ?></strong>
<br />
<a href="vestidos_informacion.php?idweb=<?php echo $row_DatosVestidos['intContador']; ?>"> Ver secci&oacute;n</a></div>
<?php } while ($row_DatosVestidos = mysql_fetch_assoc($DatosVestidos)); ?>

<!-- InstanceEndEditable -->
<!-- end .sidebar1 --></div>
<div class="content"><!-- InstanceBeginEditable name="Partederecha" -->
<?php include("includes/redes_sociales.php"); ?>
<?php include("includes/botones_redes.php"); ?>
<?php include("includes/publicidad_chica.php"); ?>
<?php include("includes/publicidad_uno.php"); ?>
<!-- end .content -->
<!-- InstanceEndEditable --></div>
<div class="footer">
<?php include("includes/pie.php"); ?></div>
<!-- end .container --></div>
</body>
<!-- InstanceEnd --></html>
<?php
mysql_free_result($DatosVestidos);
?>
  #4 (permalink)  
Antiguo 22/04/2016, 01:13
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problema con url amigables

Hola Raulovic,

Con URL's amigables debes tener en cuenta que las URL's de los scripts, css's, imágenes y demás, deben ser relativos a la raíz del sitio, algo así, suponiendo que tus hojas de estilos están en www/css/ o public_html/css/:

Código HTML:
Ver original
  1. <link href="/css/estiloprincipal.css" rel="stylesheet" type="text/css" />
  2. <link href="/css/menu.css" rel="stylesheet" type="text/css" />
  3. <link href="/css/main.css" rel="stylesheet" type="text/css" />

Por supuesto, lo mismo en las posibles rutas que tengas en los css's o js's y los includes también deben tener rutas absolutas, tipo:

Código PHP:
Ver original
  1. <?php include("/home/usuario/public_html/includes/pie.php"); ?>

Espero que te sirva...
  #5 (permalink)  
Antiguo 22/04/2016, 05:10
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Problema con url amigables

Sí te entendí, el caso es que no sé como hacer eso, nunca lo he hecho, podrías ayudarme o alguien puede ayudarme llegando a un acuerdo económico?
  #6 (permalink)  
Antiguo 22/04/2016, 07:16
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Problema con url amigables

Hola Raulovic,

En la respuesta te lo he escrito con tu código como ejemplo, pero si quieres que te lo haga yo, no hay problema, me avisas, tratamos las condiciones y vemos qué se puede hacer.
  #7 (permalink)  
Antiguo 22/04/2016, 07:33
 
Fecha de Ingreso: marzo-2016
Mensajes: 7
Antigüedad: 8 años, 1 mes
Puntos: 0
Respuesta: Problema con url amigables

Cita:
Iniciado por rbczgz Ver Mensaje
Hola Raulovic,

En la respuesta te lo he escrito con tu código como ejemplo, pero si quieres que te lo haga yo, no hay problema, me avisas, tratamos las condiciones y vemos qué se puede hacer.
Sí dime tu skype y lo hablamos por ahí.

Etiquetas: amigables, html, mysql, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:10.