Foros del Web » Programando para Internet » PHP »

.htaccess RewriteRule recibir dos parametros en distinto orden

Estas en el tema de .htaccess RewriteRule recibir dos parametros en distinto orden en el foro de PHP en Foros del Web. Tengo la siguiente url: Código: https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?title=this-is-a-test&id=999 En el htaccess agregué la siguiente regla: Código: RewriteEngine On RewriteRule ^loquesea/([^-]*)-([^-]*)/$ /carpeta/subcarpeta/pagina.php?title=$1&id=$2 [L] Con la que logré generar ...
  #1 (permalink)  
Antiguo 03/04/2020, 13:48
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Pregunta .htaccess RewriteRule recibir dos parametros en distinto orden

Tengo la siguiente url:
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?title=this-is-a-test&id=999
En el htaccess agregué la siguiente regla:
Código:
RewriteEngine On
RewriteRule ^loquesea/([^-]*)-([^-]*)/$ /carpeta/subcarpeta/pagina.php?title=$1&id=$2 [L]
Con la que logré generar la siguiente url:
Código:
https://sitioejemplo.com/loquesea/this-is-a-test-999/
Hasta ahí todo bien

PERO si los parámetros vienen en otro orden:
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?id=999&title=this-is-a-test
la nueva url ya no se genera bien.
help!
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #2 (permalink)  
Antiguo 03/04/2020, 15:40
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: .htaccess RewriteRule recibir dos parametros en distinto orden

Solución: Genera la URL siempre con el mismo orden.

De nada.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 03/04/2020, 17:49
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Respuesta: .htaccess RewriteRule recibir dos parametros en distinto orden

eso estaba claro desde el principio....

pero volviendo a la pregunta:
¿que cambios debo hacerle al RewriteRule para que siempre me genere la misma url de salida, independiente del orden en que vengan los parámetros?

tipo 1
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?title=this-is-a-test&id=999
tipo 2
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?id=999&title=this-is-a-test
url salida
Código:
https://sitioejemplo.com/loquesea/this-is-a-test-999/
htaccess
Código:
RewriteEngine On
RewriteRule ^loquesea/([^-]*)-([^-]*)/$ /carpeta/subcarpeta/pagina.php?title=$1&id=$2 [L]
alguna idea?
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X
  #4 (permalink)  
Antiguo 03/04/2020, 21:36
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: .htaccess RewriteRule recibir dos parametros en distinto orden

Cita:
Iniciado por pcarvajal Ver Mensaje
eso estaba claro desde el principio....

pero volviendo a la pregunta:
¿que cambios debo hacerle al RewriteRule para que siempre me genere la misma url de salida, independiente del orden en que vengan los parámetros?

tipo 1
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?title=this-is-a-test&id=999
tipo 2
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?id=999&title=this-is-a-test
url salida
Código:
https://sitioejemplo.com/loquesea/this-is-a-test-999/
htaccess
Código:
RewriteEngine On
RewriteRule ^loquesea/([^-]*)-([^-]*)/$ /carpeta/subcarpeta/pagina.php?title=$1&id=$2 [L]
alguna idea?
lo que no comprendo es que en que afecta la URL de salida, si esa URL de salida es solo para el servidor, lo que si puedo comprender es la URL de entrada, con la cual tratas de crear una regla con la cual sea

me refiero a

Código:
https://sitioejemplo.com/loquesea/this-is-a-test-999/
https://sitioejemplo.com/loquesea/999-this-is-a-test/
que apunte a
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?id=999&title=this-is-a-test
para php es Indistinto el Orden en el que esten sus variables


ya que es comprensible por que se trata de abarcar o modificar el SEO sin afectar el que se usa.

bueno la cuestion esta en que necesitas saber Expresiones regulares , es con ello que esta formado el MOD_REWRITE

pero mejor seria que aclares tu pregunta,
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #5 (permalink)  
Antiguo 04/04/2020, 19:57
Avatar de pcarvajal  
Fecha de Ingreso: enero-2002
Mensajes: 701
Antigüedad: 22 años, 3 meses
Puntos: 8
Respuesta: .htaccess RewriteRule recibir dos parametros en distinto orden

completamente de acuerdo!
Código:
para php es Indistinto el Orden en el que esten sus variables
Código:
pero mejor seria que aclares tu pregunta,
veamos entonces!

a partir de esta url
Código:
https://sitioejemplo.com/carpeta/subcarpeta/pagina.php?id=999&title=this-is-a-test
necesito generar esta url
Código:
https://sitioejemplo.com/loquesea/this-is-a-test-999/
(solo como nota aparte)
con esta regla
Código:
RewriteEngine On
RewriteRule ^loquesea/([^-]*)-([^-]*)/$ /carpeta/subcarpeta/pagina.php?id=$1&title=$2 [L]
logré generar esta url
Código:
https://sitioejemplo.com/loquesea/999-this-is-a-test/
el problema es que los parámetros están invertidos
Código:
999-this-is-a-test
y debería ser
Código:
this-is-a-test-999
espero que ahora haya quedado mas claro
__________________
18 laaaaargos años en FDW... y soy de los pocos que ví correr sangre! :X

Última edición por pcarvajal; 04/04/2020 a las 20:09 Razón: ahora si!
  #6 (permalink)  
Antiguo 04/04/2020, 21:39
 
Fecha de Ingreso: diciembre-2013
Mensajes: 10
Antigüedad: 10 años, 3 meses
Puntos: 4
Respuesta: .htaccess RewriteRule recibir dos parametros en distinto orden

No lo probé, pero creo que debería funcionar.

Prueba esto:

Código:
RewriteEngine On
RewriteRule ^loquesea/([0-9]+)-([^-].*)/$ /loquesea/$2-$1 [R,NC,L]
RewriteRule ^loquesea/([^-].*)-([^-].*)/$ /carpeta/subcarpeta/pagina.php?id=$1&title=$2 [L]
Cualquier cosa, avisa.
  #7 (permalink)  
Antiguo 04/04/2020, 22:53
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: .htaccess RewriteRule recibir dos parametros en distinto orden

Creo que no tienes muy claro cómo funciona esto, si tienes dos formas de acceder a la misma "página", entonces los buscadores (principalmente Google) van a considerar que tienes "contenido duplicado" y no es una buena práctica, de hecho, podría afectar el posicionamiento en resultados.

Repito:
Cita:
Solución: Genera la URL siempre con el mismo orden.

De nada.
Me gusta la solución propuesta por Dreyfuz, aunque solo le agregaría redirección 301 en caso de que los parámetros vengan en orden inverso.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 05/04/2020, 06:59
 
Fecha de Ingreso: diciembre-2013
Mensajes: 10
Antigüedad: 10 años, 3 meses
Puntos: 4
Respuesta: .htaccess RewriteRule recibir dos parametros en distinto orden

Cita:
Iniciado por Triby Ver Mensaje
Creo que no tienes muy claro cómo funciona esto, si tienes dos formas de acceder a la misma "página", entonces los buscadores (principalmente Google) van a considerar que tienes "contenido duplicado" y no es una buena práctica, de hecho, podría afectar el posicionamiento en resultados.

Repito:


Me gusta la solución propuesta por Dreyfuz, aunque solo le agregaría redirección 301 en caso de que los parámetros vengan en orden inverso.
Hablo muy de memoria, pero creo que con un R=301 no afectaría al posicionamiento SEO. Google lo que hace es como crear un "puntero" que va a apuntar siempre a la url que redirecciona. De vuelta, hablo muy de memoria. Puede que ya no funcione así google.
  #9 (permalink)  
Antiguo 05/04/2020, 13:23
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: .htaccess RewriteRule recibir dos parametros en distinto orden

Muy buena memoria, Dreyfuz, así es como funciona.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: apache, htaccess, parametros, rewriterule
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 18:33.