2012-01-20 37 views
1

.htaccess文件改写如下:麻烦与URL中的.htaccess

RewriteEngine On 
RewriteRule ^articles/(\d+)*$ ./articles.php?id=$1 

因此,如果URL foo.com/articles/123请求,控制转移到articles.php?id=123

但是,如果请求的URL是:

foo.com/articles/123/ 

foo.com/articles/123/whatever 

,我收到了 “404未找到” 的响应。

我想在所有这些情况下拨打articles.php?id=123。所以,如果网址以foo.com/articles/[digits]...开头,无论其他字符如何跟随数字,我想执行articles.php?id=[digits]。 (URL的其余部分被丢弃。)

如何更改正则表达式以实现此目的?

回答

2

只是不看结尾:

当然
RewriteRule ^articles/(\d+) ./articles.php?id=$1 
+0

啊。 PHP语法对我来说是新的 - 我忘了'$'代表什么...... –

+0

FWIW,那不是* PHP *语法,它是*正则表达式*语法。 – Charles

2

你需要允许后/有:

RewriteRule ^articles/(\d+)/?$ 

\d+将只匹配小数。并且$将不允许比赛结束。

如果你还需要尾随标识符,那么你也需要允许它们。然后,它可能是最好进行匹配的非特异性:

RewriteRule ^articles/(.+)$ 

这里.+几乎任何东西相匹配。

但是,如果你想保持那么数字ID分开结合这两个选项:

RewriteRule ^articles/(\d+)(/.*)?$ ./articles.php?id=$1