2011-12-25 23 views
17

Quiero volver a escribir una regla para mis productos.reescriba las direcciones URL del nombre del producto

Quiero usar el identificador y el nombre de la dirección URL separada por un guión como este:

significa 123-nombre del producto id = 123 y = Nombre

así que en mi php puedo conseguir el $ _GET [id] y luego consultar mi base de datos utilizando este identificador como esto:

$sql = "SELECT * from Products Where productid = " . $_GET[id]; 

aquí es lo que tengo:

RewriteEngine On 
RewriteRule ^products/([0-9+])\-([a-z]+)/?$ products.php?id=$2 [NC,L] 

pero cuando pongo esto como url, consigo un 404

por qué?

Respuesta

17

Primero: tiene un error de sintaxis. [0-9+] es una clase de caracteres que puede coincidir con (i) dígitos en el rango 0 hasta 9, o (ii) un signo +. Para usar el + como un cuantificador (como estaba previsto), mueva el + después del ], así: ([0-9]+).

Segunda: Está utilizando $2 en el producto que es el nombre del producto. Si desea usar la identificación, debe usar $1.

Esto es lo que es necesario utilizar:

RewriteEngine On 
RewriteRule ^products/([0-9]+)\-([a-z0-9_\-]+)/?$ products.php?product_id=$1 [NC,L,QSA] 

he añadido en el número de productos, guiones y guiones en caso de que lo necesite algún día.

Tercero: Usted debe ser consciente de sql injections, la secuencia de comandos no es seguro. Puede solucionar esto usando mysql_real_escape_string.

+0

muchas gracias por esta información. – natalia

+0

eres bienvenido –

0

Creo que debería usar products.php? Id = $ 1 porque el primer argumento que coincide es la identificación del producto.

Cuestiones relacionadas