2010-08-16 20 views
0

好的,我已經設置了我的網址來將「news_item.php?id = 1」重寫爲「blog/1/Title-of-post」。從漂亮的URL獲取id作爲intval

這個工作很好,除了當一個標題在開始處有數字時,例如「blog/23/12-days-to-go」,它無法找到正確的ID。

下面是我如何設置,也許有人可以理解它。

重寫規則

RewriteRule ^blog/([0-9]+)/([a-z-]+)/$ ./news_item.php?id=$1&t=$2 
RewriteRule blog/([[0-9]+)/([a-z-]+) news_item.php?id=$1&t=$2 

從URL

$id = intval($_GET['id']); 

然後獲取ID我只是用

`WHERE `id`=$id` 

爲我的查詢

鏈接使用

/blog/$id/$title/ 

所以它工作得很好,除了在標題開頭有一個數字時,標題內的數字仍然很好。任何人都可以建議做什麼?

回答

0

首先,在你的例子中,你在第二個RewriteRule中得到了額外的[

像下圖的重寫規則應該工作,你希望它:

RewriteRule ^blog/([0-9]+)/([^/]*) ./news_item.php?id=$1&t=$2 

以下URI /blog/12/24-days-to-go/extra-stuff應該給你news_item.php如下:

$_GET['id'] = 12; 
$_GET['t'] = '24-days-to-go'; 

之後的第三剝離一切/

編輯

的URI像/博客/ 12 /會工作爲好,送12的id和給你一個空$_GET['t']

3

ID的問題在您的正則表達式中。你不是在尋找數字。使用類似:

重寫規則^博客/([0-9] +)/(A-ZA-Z0-9 - ] +)/ $ ./news_item.php?id=$1 &牛逼= $ 16

「標題中的數字」起作用,因爲您只是將字母字符拉到第一個數字。 (例如「abc123def」變成「abc」)