2012-01-20 36 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