重写产品名称的网址

2022-08-30 23:35:16

我想为我的产品重写一个规则。

我想在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

为什么?


答案 1

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

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

以下是您需要使用的内容:

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

我添加了产品编号,破折号和下划线,以防有一天你需要它。

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


答案 2

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


推荐