使用像论坛这样的连字符重写URL

时间:2014-04-01 11:03:21

标签: .htaccess url-rewriting

我想重写我的项目的网址,以便在论坛中经常看到project.php?id=5&name=blahblah页面project/5-blahblah

我只设法做project/5但是一旦我添加了连字符,我显然得到了404

修改 现在我明白了:

RewriteRule    ^project/([0-9-])/?$    project.php?id=$1    [NC,L]

我也试过这样的东西,但我在正则表达式上非常糟糕>。>

RewriteRule    ^project/([0-9-][^-])/?$    project.php?id=$1    [NC,L]
RewriteRule    ^project/([0-9-])([^-]*)/?$    project.php?id=$1&name=$2    [NC,L]

顺便说一下。因为我可以依赖id,所以获得这个名字对我来说并不是那么重要,但这样会很好,因为我可能想用它做点什么

1 个答案:

答案 0 :(得分:1)

您的正则表达式不正确。

应该是

RewriteRule    ^project/([0-9])-[^/]+/?$    project.php?id=$1    [NC,L]
RewriteRule    ^project/([0-9])-([^/]+)/?$    project.php?id=$1&name=$2    [NC,L]

您使用了([0-9-]),这意味着匹配0到9之间的任何单个字符,包括0或9或-个字符。

您需要的是匹配0-9之间的单个字符,然后匹配-字符。

此正则表达式仅在您的ID为单个数字时才有效。对于多个号码ID,您可以改为使用[0-9]+