Foros del Web » Programando para Internet » PHP »

URL Shortener PHP + MySQL + htaccess

Estas en el tema de URL Shortener PHP + MySQL + htaccess en el foro de PHP en Foros del Web. Hola amigos del foro, pues espero que puedan auxiliarme ya que ya me quebre la cabeza y no encuentro donde esta el problema: Lo siguiente ...
  #1 (permalink)  
Antiguo 25/07/2013, 16:49
Avatar de MrJesux  
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
URL Shortener PHP + MySQL + htaccess

Hola amigos del foro, pues espero que puedan auxiliarme ya que ya me quebre la cabeza y no encuentro donde esta el problema:

Lo siguiente es que estoy haciendo un acortador de URLs ya tengo todo a todo me refiero ya tengo la base de datos, el archivo .php que hace la redireccion y consulta con la base de datos y el archivo .htaccess pero: al momento de testearla me da el siguiente error:
Código:
This webpage has a redirect loop
Bueno aqui les dejo el contenido del archivo .php
Código PHP:
<?php
$short 
=  $_REQUEST['id'];

mysql_connect("localhost""user""pass");
mysql_select_db("db");

$query mysql_query("SELECT * FROM blog WHERE post_url='".mysql_escape_string($short)."'");
$row mysql_fetch_row($query);
if(!empty(
$row)) {
    
$update "UPDATE blog SET post_views=(post_views + 1) WHERE post_url='".$short."' AND post_status='Published'";
    
mysql_query($update);
    
    
$data mysql_query("SELECT * FROM blog WHERE post_url='".$short."' AND post_status='Published'");
    
$info mysql_fetch_array($data);

    
Header("HTTP/1.1 301 Moved Permanently");
    
Header("Location: ".$info['post_redirect']."");

} else {
    
$html "Error: cannot find short URL";
}
mysql_close();
?>
<!DOCTYPE html>
<html lang="en">

<head>
<title>Redirecting...</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="noindex, nofollow, noarchive" name="robots">
</head>

<body>
<?= $html ?>
</body>

</html>
Y este es el contenido del archivo .htaccess
Código:
Options +FollowSymLinks 
RewriteEngine On

RewriteCond %{REQUEST_URI} !-d
RewriteCond %{REQUEST_URI} !-f
RewriteRule ^([a-zA-Z0-9_\-\+]+)$ ./index.php?id=$1

<Files .htaccess>
order allow,deny
deny from all
</Files>
Espero de verdad puedan apoyarme, y gracias de antemano.
  #2 (permalink)  
Antiguo 25/07/2013, 17:03
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: URL Shortener PHP + MySQL + htaccess

Cita:
This webpage has a redirect loop
El error es mas que descriptivo: estas redireccionando a la misma pagina desde la que se hace el envio y por ademas un mal diseño entra en un "loop" o ciclo infinito
__________________
Salu2!
  #3 (permalink)  
Antiguo 25/07/2013, 17:05
Avatar de MrJesux  
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: URL Shortener PHP + MySQL + htaccess

Cita:
Iniciado por Italico76 Ver Mensaje
El error es mas que descriptivo: estas redireccionando a la misma pagina desde la que se hace el envio y por ademas un mal diseño entra en un "loop" o ciclo infinito
Pero se supone que agarra la URL extensa desde la base de datos con este call:
Código PHP:
$info['post_redirect'
  #4 (permalink)  
Antiguo 25/07/2013, 19:44
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: URL Shortener PHP + MySQL + htaccess

Pues...no hagas un redirect... sino mejor imprime en pantalla el destino de la redireccion, toca debuguear
__________________
Salu2!
  #5 (permalink)  
Antiguo 25/07/2013, 22:08
Avatar de MrJesux  
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: URL Shortener PHP + MySQL + htaccess

Cita:
Iniciado por Italico76 Ver Mensaje
Pues...no hagas un redirect... sino mejor imprime en pantalla el destino de la redireccion, toca debuguear
no es un redirect asi le puse de nombre a la celda en la base de datos toma el campo y envia al usuario en la direccion contenida
  #6 (permalink)  
Antiguo 25/07/2013, 22:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: URL Shortener PHP + MySQL + htaccess

Cita:
Iniciado por MrJesux Ver Mensaje
no es un redirect asi le puse de nombre a la celda en la base de datos toma el campo y envia al usuario en la direccion contenida
Eso significa lo que haces.

Cita:
header('Location: url-for-redirect');
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 25/07/2013, 22:31
Avatar de MrJesux  
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: URL Shortener PHP + MySQL + htaccess

Cita:
Iniciado por pateketrueke Ver Mensaje
Eso significa lo que haces.
NO.

Es decir llegan a la url por ejemplo:

www.site.com/32424

A lo que el shortener consulta en la base de datos el ID = 32424
y de esa consulta checa el campo "post_redirect" y lo envia a la url larga
www.site.com/blog/year/mes/dia/post-title

Y todo esta bien supongo yo... pero no se porque hace un loop al momento de redireccionar si se hace mediante un header y el campo "post_redirect" tiene la url completa
  #8 (permalink)  
Antiguo 25/07/2013, 22:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: URL Shortener PHP + MySQL + htaccess

¿Cómo qué no?

Eso significa hacer redirección, sencillamente mandas al usuario hacia otra URL.

Qué la tomes de la BD es otra cosa, el objetivo detrás de los url-shorteners es hacer redirecciones.

Lo que te han dicho es que para depurar debes quitar la redirección header('Location: ...') en en lugar de eso imprimas lo que obtienes de la BD.

Un loop infinito es obvio y auto-descriptivo, haces una redirección hacia el mismo lugar como origen y destino. El hecho de que hagas la redirección con header() no nos dice nada, la url que obtienes de la BD puede que sea otra y tu ni te enteras (lo dudo).

Vamos a decir que no hay misterio ni magia negra detrás de tu problema, si no eres capaz de depurar tu propio çódigo nosotros menos, de lejos y sin más información, nada.

¿Te has puesto a pensar qué tal vez tu problema sea el .htaccess y no tanto el código PHP?

Digo, el código es tan simple que sería muy torpe que no funcione.

Si lo piensas, la expresión regular que manejas para mod_rewrite también deja pasar "index" y seguramente termina sucediendo esto:
Cita:
/index.php?id=index
Y de ahí el loop.

No sé, sólo divago, si yo fuera tu ya hubiera depurado todo y revisado con Firebug/Live HTTP Headers lo que ocurre con las cabeceras, o de plano los logs de error de Apache, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 26/07/2013, 01:38
Avatar de MrJesux  
Fecha de Ingreso: julio-2013
Mensajes: 5
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: URL Shortener PHP + MySQL + htaccess

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Cómo qué no?

Eso significa hacer redirección, sencillamente mandas al usuario hacia otra URL.

Qué la tomes de la BD es otra cosa, el objetivo detrás de los url-shorteners es hacer redirecciones.

Lo que te han dicho es que para depurar debes quitar la redirección header('Location: ...') en en lugar de eso imprimas lo que obtienes de la BD.

Un loop infinito es obvio y auto-descriptivo, haces una redirección hacia el mismo lugar como origen y destino. El hecho de que hagas la redirección con header() no nos dice nada, la url que obtienes de la BD puede que sea otra y tu ni te enteras (lo dudo).

Vamos a decir que no hay misterio ni magia negra detrás de tu problema, si no eres capaz de depurar tu propio çódigo nosotros menos, de lejos y sin más información, nada.

¿Te has puesto a pensar qué tal vez tu problema sea el .htaccess y no tanto el código PHP?

Digo, el código es tan simple que sería muy torpe que no funcione.

Si lo piensas, la expresión regular que manejas para mod_rewrite también deja pasar "index" y seguramente termina sucediendo esto:


Y de ahí el loop.

No sé, sólo divago, si yo fuera tu ya hubiera depurado todo y revisado con Firebug/Live HTTP Headers lo que ocurre con las cabeceras, o de plano los logs de error de Apache, etc.
Yo creo que a lo mejor tienes razon y que el problema sea el htaccess, ya que al testear y entro una url:
www.site.com/wru4hexe

me devuelve lo siguiente:
www.site.com/wru4hexe?id=wru4hexe

Pero se me hace raro ya que ya habia usado anteriormente hace un tiempo atras y no me habia dado ningun problema, y no entiendo por que ahora si.

Podrias ser tan amable de auxiliarme un poco? que mas datos necesitas?
  #10 (permalink)  
Antiguo 26/07/2013, 07:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: URL Shortener PHP + MySQL + htaccess

Vale, es obvio que tienes un problema con mod_rewrite.

Yo no necesito ningún dato, gracias, tu eres el que necesita revisar la documentación de dicho módulo.

Qué, al fin y al cabo, resultó no ser un problema que corresponda al foro de PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: htaccess, mysql, mysql+consulta, url-amigables
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 23:44.