Comunidad de diseño web y desarrollo en internet online

ayuda mod_rewrite

Citar            
MensajeEscrito el 08 May 2013 02:41 pm
Hola:

Estoy empezando con mod_rewite y no consigo hacer una cosa qwue me han pedido..

Si tengo una web con esta url:

http://www.cesif.es/masters.php?lang=ES&curso=6&seccion=18

Y quiero convertirla en esta:

http://www.cesif.es/master-en-quimica-objetivos

es posible?

Yo creo que tendria que pasar elparametreo curso y la sección no?

Por eduu

40 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 May 2013 04:54 pm
Así a ojos vista primero tendrías que traducir ese curso=6 en un nombre (lo mismo con seccion=18), es decir que en tu base de datos, el registro con índice 6 además tenga un campo más de tipo varchar que puede llamarse "alias" y cuyo valor será la palabra "quimica". ¿Se entiende?.

Entonces con mod_rewrite puedes extraer la palabra "quimica" de la URL y buscar el registro cuyo alias sea "quimica" (o sea el 6).

Código :

RewriteRule ^(a-zA-Z)-(a-zA-Z)-(a-zA-Z)-(a-zA-Z)$ $1.php?lang=$2&curso=$3&seccion=$4 [L,QSA]

Lo que se hacer aquí es separar la URI en cuatro usando como separador el guión, cada paréntisis crea cuatro "variables" (por llamarlas de algo que puedas comprender) numeradas del 1 al 4. Como verás la primera parte es el script PHP, la segunda es el parámetro lang y así.

Con el ejemplo que has puesto, esta reescritura resultará en esto:

Código :

http://www.cesif.es/master.php?lang=en&curso=quimica&seccion=objetivos

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 May 2013 09:40 pm
Gracias por responder.. te sigo mas o menos... entonces podria podener como alias master-en-quimica para el curso? o solo quimica?

Por eduu

40 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 09 May 2013 12:09 pm
Depende de qué caracter uses como separador de parámetros en la URl amigable. Yo asumí en el ejemplo que el caracter es el guión, si ese es el caso pues evidentemente no, no puedes tener un guión en el alias (porque la expresión regular en la reescritura de mod_rewrite excluye ese caracter).

Ahora que miro lo que he escrito, veo un error que paso a corregir.

Código :

RewriteRule ^([a-zA-Z])-([a-zA-Z])-([a-zA-Z])-([a-zA-Z])$ $1.php?lang=$2&curso=$3&seccion=$4 [L,QSA]


Para entender esto, sugiero que estudies un poco expresiones regulares.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 09 May 2013 04:25 pm
ok gracias lo pruebo y te digo

Por eduu

40 de clabLevel



Genero:Masculino  

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.