2011-12-25 89 views
17

我想重寫我的產品的規則。重寫產品名稱的網址

我想使用一個破折號像這樣分離URL中的ID和名稱:

123名指產品ID = 123和名稱=名稱

所以在我的PHP我可以得到$ _GET [ID],然後使用該ID這樣的查詢我的數據庫:

$sql = "SELECT * from Products Where productid = " . $_GET[id]; 

這是我有:

RewriteEngine On 
RewriteRule ^products/([0-9+])\-([a-z]+)/?$ products.php?id=$2 [NC,L] 

但是當我把這個作爲網址,我得到一個404

爲什麼呢?

回答

17

第一條:您有語法錯誤。 [0-9+]是一個字符類,它可以匹配(i)範圍09或(ii)+符號中的數字。要使用+作爲量詞(如預期的那樣),請在]之後移動+,如下所示:([0-9]+)

第二個:您正在使用$2在您的項目這是產品名稱。如果你想使用ID,你必須使用$1

這裏有您需要的內容:

RewriteEngine On 
RewriteRule ^products/([0-9]+)\-([a-z0-9_\-]+)/?$ products.php?product_id=$1 [NC,L,QSA] 

我的產品編號,破折號加在你需要它總有一天情況下強調。

三: 你應該知道的sql injections,你的腳本是不是安全。您可以通過使用mysql_real_escape_string來解決此問題。

+0

非常感謝您提供此信息。 – natalia 2011-12-25 16:49:47

+0

你非常歡迎 – 2011-12-25 16:50:53

0

我認爲你應該使用products.php?id = $ 1,因爲匹配的第一個參數是產品ID。