我的.htaccess
文件如下所示:
RewriteEngine On
RewriteRule ^articles/(\d+)*$ ./articles.php?id=$1
因此,如果请求网址foo.com/articles/123
,则控制权转移到articles.php?id=123
。
但是,如果请求的URL是:
foo.com/articles/123/
或
foo.com/articles/123/whatever
我收到“404 Not Found”回复。
我想在所有这些情况下致电articles.php?id=123
。因此,如果网址以foo.com/articles/[digits]...
开头,无论其他字符跟在数字后面,我都希望执行articles.php?id=[digits]
。 (URL的其余部分将被丢弃。)
如何更改正则表达式以实现此目的?
答案 0 :(得分:2)
您需要允许尾随/
:
RewriteRule ^articles/(\d+)/?$
\d+
只会匹配小数。并且$
将不允许比赛结束。
如果您还需要尾随标识符,那么您也需要允许它们。然后最好使匹配不明确:
RewriteRule ^articles/(.+)$
此处.+
几乎可以匹配任何内容。
但是如果你想将数字id分开,那么将这两个选项结合起来:
RewriteRule ^articles/(\d+)(/.*)?$ ./articles.php?id=$1
答案 1 :(得分:2)
只是不要寻找结束:
RewriteRule ^articles/(\d+) ./articles.php?id=$1