nat*_*lia 17 php mysql apache .htaccess mod-rewrite
我想为我的产品重写规则.
我想在URL中使用id和名称,用这样的短划线分隔:
123-name表示产品ID = 123和name = name
所以在我的PHP中,我可以获得$ _GET [id],然后使用此ID查询我的数据库,如下所示:
$sql = "SELECT * from Products Where productid = " . $_GET[id];
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的:
RewriteEngine On
RewriteRule ^products/([0-9+])\-([a-z]+)/?$ products.php?id=$2 [NC,L]
Run Code Online (Sandbox Code Playgroud)
但当我把它作为网址时,我得到了404
为什么?
Boo*_*eus 18
第一:你有语法错误.[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]
Run Code Online (Sandbox Code Playgroud)
我添加了产品编号,短划线和下划线,以防有一天你需要它.
第三: 你应该知道sql注入,你的脚本不安全.您可以使用mysql_real_escape_string来解决此问题.
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |