我想为我的产品重写规则。
我想用url分隔的id和name,如下所示:
123-name表示产品ID = 123和name = name
所以在我的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
为什么?
答案 0 :(得分:17)
首先:您遇到语法错误。 [0-9+]
是一个字符类,可以匹配(i)0
到9
范围内的数字,或(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修复此问题。
答案 1 :(得分:0)
我认为您应该使用products.php?id = $ 1,因为匹配的第一个参数是产品ID。