Problema con URL al entrar a frases de 'Tambien te puede gustar'

  • Autor Autor Rebelware
  • Fecha de inicio Fecha de inicio
R

Rebelware

Hace 1 semana empece a estudiar un poco lo que es programacion PHP (hasta ahora no habia salido de blogger) y arme esta pagina de Frases me gusta,con un script que compartio un usuario de forobeta oskar, para practicar y aprender al mismo tiempo. la acomode ,agrege botones, modifique un parde detalles y todo parecia ir bien.

Pero ahora he notado un problema mas grave, si entras a alguna de las frases, al quere entrar a las frases de "tambien te puede gustar" da error 404, por el simple echo de que se reescribe mal la url

el home es Diloenazul.net78.net , al entrar a alguna frase queda Diloenazul.net78.net/frases-15 por dar un ejemplo, y al querer entrar a una de las frases recomendadas, la url que tiene es:
diloenazul.net78.net/frases-15/frases-5

en vez de diloenazul.net78.net/frases-5 como deberia ser :/

Tengo entendido que esta relacionado al .htaccess , pero no tengo los conocimientos necesarios para solucionarlo, por eso decidi recurrir a ustedes.

El contenido del .htaccess es el siguiente

Insertar CODE, HTML o PHP:
##############################
# URL AMIGABLES ##############
RewriteEngine on
RewriteBase /
RewriteRule ^index-([0-9]*).html$ index.php?acc=index&pag=$1 [L]

RewriteRule ^top-frases.html$ index.php?acc=top [L]
RewriteRule ^top-frases-([0-9]*).html$ index.php?acc=top&pag=$1 [L]

RewriteRule ^frase-([0-9]*).html$ index.php?ver=frase&id=$1 [L]



##############################
# evitar contenido duplicado #
#RewriteCond %{HTTP_HOST} !^www\.
#RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

Y la web es esta Enlace eliminado

Gracias de antemano🙂
 
eso no es error del .htaccess es error de programacion!
 
Entonces es un problema de programacion :/

Porque todo lo demas funciona perfecto.. Donde deberia buscar el error? Porque puede ocurrr esto?

Por lo que pude ver, cuando estas en el home, se usa un script "principal.php" y cuando estas en una frase se usa uno que se llama "leer_frase.php"

Ahi estara el problema? El codigo de leer_frase.php es este

Insertar CODE, HTML o PHP:
<?php
// cargar id
$id = intval($_GET['id']);

// frase
$q = mysql_query("SELECT * FROM frases WHERE id='$id'");
// comprobar
if(mysql_num_rows($q)==0){
 die('Esta frase no existe o ha sido borrada!. <a href="'.$url.'/">Volver a la web</a>');
}
$frase = mysql_fetch_array($q);

// actualizar contador
$q = mysql_query("UPDATE frases SET hits=hits+1 WHERE id='$id'");
?>
<!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=iso-8859-1" />
<title><?=$frase['texto']?> - <?=$tituloWeb?></title>
<link href="css/web.css" rel="stylesheet" type="text/css" />
<link rel="shortcut icon" href="<?=$url?>/favicon.ico">
<base href="http://www.diloenazul.net78.net/" /> 
<script type="text/javascript" src="<?=$url?>/js/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="js/jquery.limit-1.2.source.js"></script>
<script type="text/javascript" src="js/acciones.js"></script>
<!-- seo -->
<meta name="keywords" content="frase facebook, <?=$frase['texto']?>" />
<link rel="canonical" href="<?=$url?>/<?=urlSeo($frase['id'])?>" />
<!-- /seo -->
</head>

<body>

<!-- global #star -->
<div id="global">

<?php include('header.php');?>

<!-- contenido #star -->
<div id="contenido">

 <?php include('sidebarIz.php');?>
 
 <div class="bloque-iz" style="width:620px; margin-right:10px">
  
  <!-- leer frase -->
  <div class="radius8 bgB" style="padding:10px">
    <table width="100%" border="0" cellspacing="0" cellpadding="2">
      <tr>
        <td colspan="2"><h1 class="bigFont"><?=$frase['texto']?></h1></td>
      </tr>
      <tr>
        <td colspan="2"><div class="aviso">Por el momento ,debido a un pequeño problema tecnico, las frases reconedadas en, "Tambien te puede gustar" no funcionaran, por eso ve a inicio o top del momento, para navegar entre las frases,disculpa las molestias, estamos trabajando para Solucionarlo</div></td>
      </tr>
      <tr>
        <td><?php 

  include('Compartir.php');
	
  function urlActual ()
  {
    $url = 'http';
    if ($_SERVER["HTTPS"] == "on")
    {
      $url .= "s";
    }
    $url .= "://";
    if ($_SERVER["SERVER_PORT"] != "80")
    {
      $url .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] .
          $_SERVER["REQUEST_URI"];
    }
    else
    {
      $url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $url;
  }  
  
  $url = urlActual ();
  
  $titulo = "Título de la página o descripción a publicar";

  $social = new SocialClass($url, $titulo, "", "url"); 

?>
<a href="<?php echo $social->facebook(); ?>" 
      target="_blank"><img src="http://4.bp.blogspot.com/-6fVq5rGne4M/Th2ZkoAdLeI/AAAAAAAAAWk/vvTfL2fPF8E/s200/boton-me-gusta-facebook.jpg" border="0" alt="AjpdSoft Publicar en Facebook"></a>

</td>
<td><a href="https://twitter.com/share" class="twitter-share-button" data-via="Rebelware" data-lang="es">Twittear</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></td>
    <td><!-- Inserta esta etiqueta donde quieras que aparezca Botón +1. -->
<div class="g-plusone" data-size="medium"></div>

<!-- Inserta esta etiqueta después de la última etiqueta de Botón +1. -->
<script type="text/javascript">
  window.___gcfg = {lang: 'es'};

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
</script></td>  </tr>
    </table>
  
  </div>
  <!-- frases del día -->
  <div class="radius8 bgB" style="padding:10px; margin-top:10px">
   <h2 class="normalFont borderUp">Tambien te puede gustar...</h2>
   <ul class="lista">
<?php
// ultimas frases
$q = mysql_query("SELECT * FROM frases WHERE NOT id='$id' ORDER BY RAND() LIMIT 20");
if(mysql_num_rows($q)!=0){

 while($frase = mysql_fetch_array($q)){
  echo '
    <li>
     <div class="megusta"><div class="fb-like" data-href="'.urlencode($paginaFacebook).'" data-send="false" data-width="350" data-show-faces="false"></div></div>
     <div class="frase"><a href="'.$url.'/'.urlSeo($frase['id']).'">'.recortar($frase['texto'],55).'</a></div>
    </li>';
 }

}
?>
   </ul>
  </div>
 
 </div>

 
 <div class="clear"></div>

</div>
<!-- contenido #end -->

Disculpen tantas preguntas, pero la verdad no se por donde encarar el problema :/
 
Yo lo veo solucionado a como lo tienes, incluso entre a tu web y funciona perfecto.

Quizás lo solucionaste en estos minutos, de todos modos si me equivoco, dime como quieres que quede y como esta ahora y en unos minutos te respondo
 
Hola heyfranks, gracias por tu interes. Mira acabo de entrar y sigue el mismo problema. Que dentro de un enlace, las frases en "tambien te puede gustar" tienen mal la url, y al hacer clic en ellas da error 404. Por cierto estoy usando Google Chrome, quenavegador estas usando? quizas venga por ahi el problema?

Un detalle que me acorde recien, apenas monte el script en el servidor, sin tocarlo ni nada, me hacia algo parecido,daba error 404 con las frases que estan en el Home, y al hacer clic en enviar frase ( lo que no recuerdo es si escribia mal la url , eso no me fije en el momento)

La solucion estaba en el mismo tema del que descargue el script, en el que decia que habia que agregar RewriteBase/ justo debajo de RewriteEngine on en el archivo .htaccess.

Dicho y echo eso soluciono el problema, por eso se me ocurrio pensar que el problema radica en el .htaccess

Sera problema del Host en que estoy? estoy usando 000webhost

Es una lastima es lo unico que le falta para quedar 100% funcional :grumpy:

Gracias por su ayuda, enserio
 
Ahaha ya me fije, ok yo conozco la solucion y es sobre URL absolutas y URL relativas, de seguro en los links pusiste /archivo.php en los bloques de "tambien te pueden gustar" no es problema del htaccess sino de programación.

Es muy fácil solucionarlo, antes del / agregale un punto, entonces la url quedaría algo así.

./archivo.php, en caso de que eso no te funcione, puedes probar quitandole los /

Insertar CODE, HTML o PHP:
<li>
     <div class="megusta"><div class="fb-like" data-href="https%3A%2F%2Fwww.facebook.com%2FDiloEnAzul" data-send="false" data-width="350" data-show-faces="false"></div></div>
     <div class="frase"><a href="http://diloenazul.net78.net/frase-49.html/frase-136.html">Y dijo el capitan: &quot;Abordar el barco&quot;... y le...</a></div>
    </li>

Esa es la solución, ahora bien, si no comprendes enviá ese mismo bloque de linea, asumo que es un for o un while el que estas generando y aquí mismo te reenvió la solución.
 
Insertar CODE, HTML o PHP:
<!-- frases del día -->
  <div class="radius8 bgB" style="padding:10px; margin-top:10px">
   <h2 class="normalFont borderUp">Tambien te puede gustar...</h2>
   <ul class="lista">
<?php
// ultimas frases
$q = mysql_query("SELECT * FROM frases WHERE NOT id='$id' ORDER BY RAND() LIMIT 20");
if(mysql_num_rows($q)!=0){

 while($frase = mysql_fetch_array($q)){
  echo '
    <li>
     <div class="megusta"><div class="fb-like" data-href="'.urlencode($paginaFacebook).'" data-send="false" data-width="350" data-show-faces="false"></div></div>
     <div class="frase"><a href="'.$url.'/'.urlSeo($frase['id']).'">'.recortar($frase['texto'],55).'</a></div>
    </li>';
 }

}
?>
   </ul>
  </div>

Ese seria el bloque que contiene "tambien te puede gustar"

Si no me equivoco, el que controla los enlaces es esta linea

Insertar CODE, HTML o PHP:
<div class="frase"><a href="'.$url.'/'.urlSeo($frase['id']).'">'.recortar($frase['texto'],55).'</a></div>

Una solucion que se me ocurre es que hay que modificar esa linea , para que la direccion antes de .'/' sea el home Enlace eliminado en vez de tomar la url actual.

Pero no se como hacerlo, para que no me de error de sintaxis :/
 
claro está

Insertar CODE, HTML o PHP:
<div class="frase"><a href="'.$url.'/'.urlSeo($frase['id']).'">'.recortar($frase['texto'],55).'</a></div>

la solución

es que lo más seguro es que $url, este obteniendo la url total del servidor, trata de hacer lo siguiente...

Insertar CODE, HTML o PHP:
<div class="frase"><a href="'urlSeo($frase['id']).'">'.recortar($frase['texto'],55).'</a></div>

si eso ya no te funciona, enviame mp y hablamos por skype o messenger hasta dar con la respuesta.
 
Lo intente y me da error de Sintaxis :/
Igualmente encontre donde esta el problema, aunque no como solucionarlo.
El problema esta en el boton sharer de facebook, mejor dicho con el codigo que utilice para ponerlo.

Insertar CODE, HTML o PHP:
<td><?php 

  include('Compartir.php');
	
  function urlActual ()
  {
    $url = 'http';
    if ($_SERVER["HTTPS"] == "on")
    {
      $url .= "s";
    }
    $url .= "://";
    if ($_SERVER["SERVER_PORT"] != "80")
    {
      $url .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] .
          $_SERVER["REQUEST_URI"];
    }
    else
    {
      $url .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    }
    return $url;
  }  
  
  $url = urlActual ();
  
  $titulo = "Título de la página o descripción a publicar";

  $social = new SocialClass($url, $titulo, "", "url"); 

?>
<a href="<?php echo $social->facebook(); ?>" 
      target="_blank"><img src="http://4.bp.blogspot.com/-6fVq5rGne4M/Th2ZkoAdLeI/AAAAAAAAAWk/vvTfL2fPF8E/s200/boton-me-gusta-facebook.jpg" border="0" alt="AjpdSoft Publicar en Facebook"></a>

</td>

No se si el problema estara en el compartir.php o en el codigo que lo utiliza para crear el boton

Pero no importa, lo que hize fue cambiar el boton sharer de facebook, por el plugin Like como viene originalmente y ya funciona perfectamente la pagina 😀

Reemplace ese codigo con este

Insertar CODE, HTML o PHP:
<td><div class="fb-like" data-href="<?=$url?>/<?=urlSeo($frase['id'])?>" data-send="false" data-width="350" data-show-faces="false"></div></td>

Mas adelante me pondre a revisar el codigo del boton sharer solo para aprender donde esta el error, porque de eso se trata esto. Ya que la pagina esta 100% funcional y el boton like cumple casi la misma funcion que el sharer . :encouragement:

Muchisimas Gracias por tu ayuda e interes, enserio te digo
Gracias😛8:

P.D.: Por si a alguien le interesa el contenido de Compartir.php es este

Insertar CODE, HTML o PHP:
<?php  

  class SocialClass 
  {
    var $url;
    var $title;
    var $target;
    var $type;
         
	 
    function SocialClass($_url, $_title, $_target = "_blank", $_type = "link") 
    {
      $this->url = urlencode($_url);
      $this->title = urlencode($_title);
      $this->tituloTwitter = $_title;
      $this->setTarget($_target);
      $this->setType($_type);
    }
  
    function setTarget($_target) 
    {
      if ($_target != "") 
      {
        $this->target = " target=\"".$_target."\"";
      }
    }
  
    function setType($_type) 
    {
      $this->type = $_type;
    }
  
    function write($path, $label = "") 
    {
      if ($this->type == "link") 
      {
        return "<a href=\"".$path."\"".$this->target.
            ">".$label."</a>";
      } 
      else 
      {
        return $path;
      }
    }
  
  
  
    function facebook($label = "Facebook") 
    {
      $path = "http://www.facebook.com/sharer.php?u=".
          $this->url."&t=".$this->title;
      return $this->write($path, $label);
    }
  
   
 
    function twitter($label = "Twitter") 
    {
      $cadena = $this->tituloTwitter;			  

      $cadenasBuscar = array("-", ",", "   ");
      $cadenasPoner= array(" ", " ", " ");
      $cadena = str_replace($cadenasBuscar, $cadenasPoner, $cadena);

      $cadenasBuscar = array("á", "Á", "é", "É", "í", "Í", "ó", "Ó", "ú", "Ú");
      $cadenasPoner = array("a", "A", "e", "E", "i", "I", "o", "O", "u", "U");
      $cadena = str_replace ($cadenasBuscar, $cadenasPoner, $cadena);

      $cadena = urlencode(trim($cadena));

      $path = "http://twitter.com/home?status=". 
          $cadena . " - " . $this->url;
      return $this->write($path, $label);
    }
    
  }  
?>
 
Atrás
Arriba