2011-12-25 64 views
17

我想重写我的产品的规则。重写产品名称的网址

我想使用一个破折号像这样分离URL中的ID和名称:

123名指产品ID = 123和名称=名称

所以在我的PHP我可以得到$ _GET [ID],然后使用该ID这样的查询我的数据库:

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

这是我有:

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

但是当我把这个作为网址,我得到一个404

为什么呢?

回答

17

第一条:您有语法错误。 [0-9+]是一个字符类,它可以匹配(i)范围09或(ii)+符号中的数字。要使用+作为量词(如预期的那样),请在]之后移动+,如下所示:([0-9]+)

第二个:您正在使用$2在您的项目这是产品名称。如果你想使用ID,你必须使用$1

这里有您需要的内容:

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

我的产品编号,破折号加在你需要它总有一天情况下强调。

三: 你应该知道的sql injections,你的脚本是不是安全。您可以通过使用mysql_real_escape_string来解决此问题。

+0

非常感谢您提供此信息。 – natalia 2011-12-25 16:49:47

+0

你非常欢迎 – 2011-12-25 16:50:53

0

我认为你应该使用products.php?id = $ 1,因为匹配的第一个参数是产品ID。