PHP - Mod rewrite y Htaccess

 
Vista:

Mod rewrite y Htaccess

Publicado por Luis (5 intervenciones) el 28/02/2006 09:46:01
Conozco el funcionamiento general de la configuracion en htaccess del mod rewrite pero tengo un caso que me parece complicado:

Las urls de mi página son así:

- EJEMPLO 1, EQUIVALENTE A ABOGADOS ALAVA:
http://www.dominio.com/buscar.php?empresa=Empresa+o+Profesional&actividad=1&provincia=minibuscador.php%3Fidprovincia%3D1&zonas=63&imageField3.x=15&imageField3.y=8

- EJEMPLO 2, EQUIVALENTE A ABOGADOS ALBACETE:
http://www.dominio.com/buscar.php?empresa=Empresa+o+Profesional&actividad=1&provincia=minibuscador.php%3Fidprovincia%3D2&zonas=64&imageField3.x=27&imageField3.y=8

Lo que ocurre, es que tengo 50 actividades x 50 provincias ( 2500 resultados ) y necesitaría que donde pone actividad=1 lo cogiese como Abogados, actividad=2 Cristaleros, etc para hacer únicamente 50 rewriterules en el htaccess

Las urls serían http://www.dominio.com/Abogados_Alava.htm

PARTES DE LAS URLS:
buscar.php?empresa=Empresa+o+Profesional \\ Texto comun a todas las búsquedas

&actividad=1 \\ Actividad 1 equivale a Abogados

&provincia=minibuscador.php%3Fidprovincia%3D2 \\ Provincia 1 equivale a Álava

&zonas=64 \\ No necesito zonas para la url. Si es posible ignorarlo

&imageField3.x=27&imageField3.y=8 \\ También ignorarlo, además es la única parte de cualquier url que no tiene ninguna lógica a la hora de hacer una rewriterule.

Muchas gracias y perdona las molestias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

solucion facil

Publicado por xxx (39 intervenciones) el 28/02/2006 13:07:39
hola.
mira..
haz lo siguiente (basandome en una URL como "http://www.dominio.com/Abogados_Alava.htm")

RewriteEngine on
#/Abogados_Alava.htm?empresa=Empresa+o+Profesional
RewriteRule ^([^_]*)_([^_]*).htm$ /?actividad_nombre=$1&provincia_nombre=$2&%{QUERY_STRING} [L]

y luego modifica tu script praa que si no se provee provincia (ID), pueda encontrar los registros por su nombre (que tendras que tener en una nueva columna si no la tienes) en tu base de datos.

de otra forma.
vas a tener que escribir 50+50 rewrite rules
y cuando agregues una nueva provincia o profesion, tendrás que actualizar este fichero (mala idea)

espero que te sirva.
xxx

PD: ([^_]*) significa buscar cualquer palabra que no contenga el caracter "_"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

correccion

Publicado por xxx (39 intervenciones) el 28/02/2006 13:09:26
olvide el nombre del fichero ( buscar.php ) en la regla

deberia leerse

RewriteRule ^([^_]*)_([^_]*).htm$ /buscar.php?actividad_nombre=$1&provincia_nombre=$2&%{QUERY_STRING} [L]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:correccion

Publicado por Luis (5 intervenciones) el 01/03/2006 10:23:16
Hay algo cosa que no entiendo:

Para la url del ejemplo:

http://www.admicove.com/buscar.php?empresa=Empresa+o+Profesional&actividad=1&provincia=minibuscador.php%3Fidprovincia%3D1&zonas=63&imageField3.x=52&imageField3.y=1

Que quiero que sea equivalente a:

http://www.admicove.com/Abogados_Alava.htm
\\ sería: &actividad=1_&provincia=minibuscador.php%3Fidprovincia%3D1
\\actividad 1_provincia 1

¿ Porque junto a actividad y provincia le añades "_nombre" si no aparece en la url ?

Quiero sustituir el ID por el nombre de la provincia o actividad para no tener que hacer uno por uno cada resultado de busqueda ( 2500 resultados )

RewriteRule ^([^_]*)_([^_]*).htm$ /buscar.php?actividad_nombre=$1&provincia_nombre=$2&%{QUERY_STRING} [L]

En las bases de datos los datos del servidor, aparecen los datos así:

- <provincias>
<id>1</id>
<comunidad>7</comunidad>
<nombre>ALAVA</nombre>
</provincias>
- <provincias>
<id>2</id>
<comunidad>14</comunidad>
<nombre>ALBACETE</nombre>
</provincias>

Muchas gracias XXX
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:correccion

Publicado por xxx (39 intervenciones) el 01/03/2006 17:36:54
hola. mira, lo de nombre es para que le permitas a tu script de alguna forma relacionar el nombre con la ID.

en simples palabras.
pasas en la URL el nombre (provincia_nombre) y modificas tu script para que cuando haga la busqueda en tu base de datos, no la haga por ID, sino que por nombre.
obviamente tienes que crear una nueva columna en tu base de datos para que se relacionen los IDs con lo nombres

la otra opcion sino es que crees 100 reglas (50 para las provincias, 50 para la actividad)

esta ultima opcion es mala porque va a tirarte abajo el servidor ya que por cada pedido de pagina, va a tener que evaluar entre 51 y 100 reglas.

si tienes dudas puntuales.pregunta, pero no cpies codigo HTML porque eso no va a ayudar a resolver tu problema.

si no sabes php. lo siento. no hay mucho que se pueda hacer.

xxx
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar