Foros del Web » Programando para Internet » PHP »

paginador de okram y las urls amigables

Estas en el tema de paginador de okram y las urls amigables en el foro de PHP en Foros del Web. Hola a todos de nuevo. En la v2 del paginador de okram está la posibilidad de configurarlo para url amigables. según él mismo, en el ...
  #1 (permalink)  
Antiguo 02/06/2010, 03:32
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
paginador de okram y las urls amigables

Hola a todos de nuevo. En la v2 del paginador de okram está la posibilidad de configurarlo para url amigables. según él mismo, en el .htaccess estaría esta regla:

Código PHP:
RewriteRule ^modrewrite/usuarios/?(/p([0-9]+).html)?$ ejemplos.php?tipo=modrewrite&page=$[L
y en el paginador habría que definir la url amigable, que como os digo, tal y como muestra okram en su ejemplo, sería del tipo:

Código PHP:
// Establecemos la estructura para generar los links
        
$paging->linkEstructura("modrewrite/usuarios/p{n}.html"); 
Bien. esto en teoría debería dar como resultado que los enlaces fueran http://www.tuweb.com/modrewrite/usuarios/p1.html donde p1 sería la página en lugar de http://www.tuweb.com/ejemplos.php?ti...rewrite&page=1.

Bien. comprobado este punto en servidor local, con las mismas reglas y los mismos códigos, tengo que cuando la página es la siguiente o posteriores (2, 3, 4...), funciona correctamente, y muestra
http://www.tuweb.com/modrewrite/usuarios/p2.html
http://www.tuweb.com/modrewrite/usuarios/p3.html
http://www.tuweb.com/modrewrite/usuarios/p4.html
.
.
.

según la página que sea. ¿cuál es el problema? el problema radica en que si estoy en la página 2 y quiero volver a la página número uno, me devuelve este error:
http://www.tuweb.com/modrewrite/usuarios/modrewrite/usuarios/p1.html
y lógicamente no encuentra la página. nótese como repite los directorios virtuales creados para la url amigable.

lo mismo pasa si estoy en la tres y quiero volver a la dos o la uno...y así sucesivamente. ¿a qué se debe?
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #2 (permalink)  
Antiguo 02/06/2010, 04:18
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: paginador de okram y las urls amigables

Eso pasa porque cuando usas mod_rewrite para "simular" carpetas debes especificar la ruta absoluta de tu sitio, ya sea con http y el dominio o solo antecediendo la URL con una diagonal:

Código PHP:
Ver original
  1. // Ruta absoluta sin especificar dominio
  2.  $paging->linkEstructura("/modrewrite/usuarios/p{n}.html");
  3.  
  4. // Ruta absoluta especificando dominio
  5.  $paging->linkEstructura("http://www.tuweb.com/modrewrite/usuarios/p{n}.html");
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 02/06/2010, 05:15
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: paginador de okram y las urls amigables

Cita:
Iniciado por Triby Ver Mensaje
Eso pasa porque cuando usas mod_rewrite para "simular" carpetas debes especificar la ruta absoluta de tu sitio, ya sea con http y el dominio o solo antecediendo la URL con una diagonal:

Código PHP:
Ver original
  1. // Ruta absoluta sin especificar dominio
  2.  $paging->linkEstructura("/modrewrite/usuarios/p{n}.html");
  3.  
  4. // Ruta absoluta especificando dominio
  5.  $paging->linkEstructura("http://www.tuweb.com/modrewrite/usuarios/p{n}.html");
eso mismo fue lo primero que pensé pero probé y no iba. seguía dando error. ahora al comprobar que tú me decías lo mismo que la opción que yo pensaba he vuelto a probar y ¡¡¡zas!!! funciona!!! evidentemente, algún / o alguna comilla iría de más o de menos.

enormemente agradecida Triby
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #4 (permalink)  
Antiguo 02/06/2010, 06:19
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: paginador de okram y las urls amigables

ups....creo que canté victoria antes de tiempo. veréis, donde yo tengo el paginador, la ruta es

http://www.miweb.com/ficha.php?cod=45678cde&page=1

quiero obtener una url amigable del tipo:

http://www.miweb.com/articulo/45678cde/MITITULO/p1

donde 45678cde es la variable $cod y MITITULO es la variable $Titulo asociada a ese codigo cod.

para ello, en el enlace del paginador meto esto:

Código PHP:
        $paging->linkEstructura("http://http://www.miweb.com/articulos/$datos[codart]/$datos[tituloart]/p{n}"); 
donde $datos[codart] recoge el codigo y $datos[tituloart] recoge el titulo

trato de dar esta regla en el .htaccess

Código PHP:
RewriteRule ^articulos/(.+)/(.+)/?(/p([0-9]+).html)?$ ficha.php?cod=$1&page=$[L
pero no obtengo nada. al dar al enlace de página 2 sale en blanco la página. el error está en la regla del .htaccess pero no logro dar con ella.
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Última edición por estibaliz2006; 02/06/2010 a las 08:01
  #5 (permalink)  
Antiguo 02/06/2010, 10:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: paginador de okram y las urls amigables

Cita:
Iniciado por estibaliz2006
RewriteRule ^articulos/(.+)/(.+)/?(/p([0-9]+).html)?$ ficha.php?cod=$1&page=$2 [L]
Si deseas que tus enlaces sean:
http://www.miweb.com/articulo/45678cde/MITITULO/p1
, entonces en la regla del .htaccess sobra el .html.

No soy muy bueno con expresiones regulares, pero me parece que tambien los dos signos de interrogacion estan de mas ahi.

Edito, creo que tambien falta la parte donde obtienes Codart:

Cita:
RewriteRule ^articulos/([a-zA-z0-9]+)/(.+)/p([0-9]+)$ ficha.php?cod=$1&page=$2 [L]
Tal vez eso funcione.
__________________
- León, Guanajuato
- GV-Foto

Última edición por Triby; 02/06/2010 a las 10:47
  #6 (permalink)  
Antiguo 03/06/2010, 02:09
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: paginador de okram y las urls amigables

bueno...al final mira como lo he conseguido

Código PHP:
RewriteRule ^articulos/([a-zA-z0-9]+)/(.*)/p([0-9]+) index.php?$cod=$1&page=[B]$3[/B] [L
fijate que en page he puesto la $3 en lugar de la $2 pues la $2 sería el título

ahora tengo otro problema: poniendo en .htaccess esa regla solamente, va muy bien. pero es que en .htaccess tengo otra regla parecida y entonces lo fastidia todo, es decir, es la misma regla pero para el acceso al artículo, sin paginar:

Código PHP:
RewriteRule ^articulos/(.+)/(.+) ficha.php?cod=$[L
bien. pues teniendo esas dos reglas, da como resultado que no hace pagina. a qué es debido?
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen
  #7 (permalink)  
Antiguo 03/06/2010, 04:54
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: paginador de okram y las urls amigables

Nada....el problema está ahí....que hay dos reglas con casi lo mismo:

Código PHP:
RewriteRule ^articulos/([a-zA-z0-9]+)/(.*) ficha.php?cod=$[L]

RewriteRule ^articulos/([a-zA-z0-9]+)/(.*)/p([0-9]+) ficha.php?cod=$1&page=$[L
si yo en la primera en lugar de artículos pongo por ejemplo fichas tal que así

Código PHP:
RewriteRule ^fichas/([a-zA-z0-9]+)/(.*) ficha.php?cod=$[L]

RewriteRule ^articulos/([a-zA-z0-9]+)/(.*)/p([0-9]+) ficha.php?cod=$1&page=$[L
entonces sí funciona. alguno sabéis por qué?
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Última edición por estibaliz2006; 03/06/2010 a las 05:39
  #8 (permalink)  
Antiguo 03/06/2010, 05:48
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Respuesta: paginador de okram y las urls amigables

¡¡¡¡SOLUCIONADO!!!!!

Resulta que la regla 1 abarcaba a la 2 por tener el caracter / en la expresión regular.

Según he podido estudiar, las expresiones se evalúan en el orden que las escribes y se cumple la primer reescritura en la que entra la URL escrita. Las siguientes se descartan.

Qué he hecho entonces? pues cambiar el orden: poner primero la regla número 2 y después la regla número 1 y...................SOLUCIONADO!!!!

supongo que hay más gente que alguna vez se le planteará este problema. aquí tienen la solución. besitos a todos los que me habéis ayudado...estaba desesperada....:corazon :

p.d.: gracias otra vez por tus orientaciones Triby
__________________
desgraciadamente no conozco php ni la mitad de lo que lo conocen ustedes y eso es menos de la mitad de lo que yo querria y lo que yo querria es menos de la mitad de lo que la mitad de ustedes conocen

Etiquetas: amigables, paginador, 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 03:15.