我想重写我的项目的网址,以便在论坛中经常看到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,所以获得这个名字对我来说并不是那么重要,但这样会很好,因为我可能想用它做点什么
答案 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]+
。