2013-02-14 78 views
0

我已經搜索了這個問題的答案已經找到一篇文章,但它並沒有給出確切的答案。這可以在這裏找到:PHP - How can I replace dashes with spaces?搜索引擎優化友好的URL和查詢數據庫php

我使用這個功能到我的博客標題轉換成搜索引擎友好的URL字符串:

//SEO Friendly URLS 
public static function Seo($input){ 
    $input = str_replace(array("'", "-"), "", $input); 
    $input = mb_convert_case($input, MB_CASE_LOWER, "UTF-8"); 
    $input = preg_replace("#[^a-zA-Z0-9]+#", "-", $input); 
    $input = preg_replace("#(-){2,}#", "$1", $input); 
    $input = trim($input, "-"); 
    return $input; 
} 

將轉換標題像這樣「我的博客標題」到「我的-博客-title「,這很好。不過,我通常在URL中傳遞博客ID以從數據庫中獲取博客,但我試圖保留真正友好的URL。

我知道我可以將博客ID作爲第二個查詢字符串傳遞給標題末尾,例如mysite.com/page.php?post=my-blog-post & id = 1但仍然看起來很糟糕。我將使用.htaccess刪除.php和'?'來自網址,但我不確定如何在傳遞ID時保留一個漂亮的URL。

如何在使用博客標題作爲URL查詢時查詢數據庫?

+1

你總是可以用一個半題爲結構去(這仍然是搜索引擎友好) 示例: http://site.com/my-blog-title/234/ 其中,234是條目ID。 – 2013-02-14 03:21:03

+0

不能讓你的網址是'example.com/id/title'例如:'example.com/1/my-blog-title'和'explode('/'$ input)' – Class 2013-02-14 03:21:16

+0

感謝理查德,我想我沒有'甚至想到這一點。我會放棄這一點。我只是想,因爲我看到很多博客都這樣做,這樣做有一個更簡單的方法。 – 2013-02-14 03:24:04

回答

4

URL友好版本的標題通常被稱爲slu。。如果您將slug存儲在數據庫表中,則可以使用它來檢索文章。無論如何,最好儲存slu so,以便一旦創建slu it,它永遠不會改變。

例如,假設您發現並修復了Seo功能中的錯誤,可能會改變您的網址,這顯然是不好的SEO。將數據庫存儲在數據庫中可以避免這個問題。

如果你存儲slu,,你可能還需要爲每個博客類別設置一個slu g。這樣你就更加模仿文件系統,不再需要確保每個子彈都是獨一無二的。雖然不太可能在不同的目錄中擁有相同標題的文章,但在構建網站時需要考慮這一點。

+0

感謝你們,這是一個很好的方法來實現我想要做的事情。 – 2013-02-19 18:23:31

0

您可以使用mod_rewrite模塊用於Apache。這是最常見的做法。

使用.htaccess重寫規則

RewriteRule ^([^?]*) index.php?route=$1 [L,QSA]

URL http://example.com/en/my-life/first-impression 將 「改寫」,並傳遞給index.php作爲GET參數route

用破折號在PHP中展開它。

$parts = explode('/', $_GET['route']);

這是你將如何讓網址的各個部分,並相應地使你的PHP邏輯,

$parts[0] => language code 
$parts[1] => category 
$parts[2] => post SEO title