好吧,我设置了我的网址,将“news_item.php?id = 1”重写为“blog / 1 / Title-of-post”。
除了标题在开头有数字,例如“blog / 23/12-days-to-go”时,它无法找到正确的ID。
以下是我如何设置它,也许有人可以理解它。
重写规则
RewriteRule ^blog/([0-9]+)/([a-z-]+)/$ ./news_item.php?id=$1&t=$2
RewriteRule blog/([[0-9]+)/([a-z-]+) news_item.php?id=$1&t=$2
从网址获取ID
$id = intval($_GET['id']);
然后我只使用
`WHERE `id`=$id`
作为我的查询
使用链接
/blog/$id/$title/
除了在标题开头有一个数字之外,它的工作正常,但标题中的数字很好。谁能建议做什么?
答案 0 :(得分:3)
ids的问题在于你的正则表达式。你不是在寻找数字。使用类似的东西:
RewriteRule ^ blog /([0-9] +)/([A-Za-z0-9 - ] +)/ $。/ news_item.php?id = $ 1& t = $ 2
“标题中的数字”有效,因为您只将字母字符拉到第一个数字。 (例如“abc123def”变为“abc”)
答案 1 :(得分:0)
首先,在您的示例中,您在第二个RewriteRule中获得了额外的[
。
如下所示的RewriteRule应该按照您的要求工作:
RewriteRule ^blog/([0-9]+)/([^/]*) ./news_item.php?id=$1&t=$2
以下URI /blog/12/24-days-to-go/extra-stuff
应该在news_item.php中提供以下内容:
$_GET['id'] = 12;
$_GET['t'] = '24-days-to-go';
在第三个/
之后剥离所有内容。
修改强>
像/ blog / 12 /这样的URI也可以正常工作,发送12作为id
并给你一个空的$_GET['t']