2011-03-22 100 views
0

鑑於我知道如何設置的.htaccess ...重寫網址SEO友好,如何反轉回來?

所以我的用戶,而不是

http://www.pets.com/products.php?id=7 

會看到

http://www.pets.com/products/7/ 

但如何沒有ID號一樣管理網址

http://www.pets.com/products/dog-food-purina 

我該如何寫一條通用規則來做到這一點?可能嗎? 我以爲我可以寫一個PHP腳本,在htaccess中追加規則一個接一個,每個鏈接一個,但它看起來很瘋狂吧?

喜歡的東西

#RewriteRule ^dog-food-purina/$ product.php?id=1 [NC,L] 
    #RewriteRule ^dog-food-otherbrand/$ product.php?id=2 [NC,L] 
    ...etc... 

回答

1

爲什麼不在數據庫中添加一個唯一的標識符,以便一行數據同時具有唯一的ID(7)和唯一的「 slu「」(dog-food-purina)?這樣,您可以通過簡單地將slug或ID轉發到PHP腳本並在其中處理它來以任何方式查找行。

For example: your purina row can be as follows: 
row -> id = 1 
row -> name = "Purina Dog Food" 
row -> description = "This is awesome stuff!" 
row -> slug = "dog-food-purina" 
row -> quantity = "10lbs" 
row -> price = "5" 

然後做這樣的事情:

if (is_string($param) && !empty($param)) { 
    $sql = "SELECT * FROM products WHERE slug = '{$param}'" 
} else if (is_numeric($param) && $param > 0) { 
    $sql = "SELECT * FROM products WHERE id = {$param}" 
} else return false 

希望它可以幫助

+0

是的,這就是我的意思:「slu」子「,所以據我瞭解,我需要slu obviously子......顯然,這確實證實了我的想法!謝謝 – Francesco 2011-03-22 21:56:09

+0

沒問題,很高興幫助。 – Swader 2011-03-24 10:04:21

0

是的,這是不必要的。爲什麼不把/ products /後的任何內容轉發到products.php,並且該腳本將根據需要執行查找? (即它會檢測一個id,或者根據名稱執行查找)

+0

正確的,但也是我的問題是:如果我把它發送到PHP腳本,然後爲每個產品我應該存儲像「dog-food-purina」這樣的關鍵詞,這樣我就可以匹配url了嗎?我沒有看到其他的方式...... – Francesco 2011-03-22 18:40:10

+0

是的,如果你想按名稱(或其他標識符)查找產品,則需要爲每個產品存儲它們,然後在有人點擊該端點時進行查找。或者,如果「dog-food-purina」不是唯一的,則需要進行文本搜索。 – 2011-03-22 18:53:32