我會建議使用ID和名稱一起使用,以便您可以支持具有相同名稱的產品(將來打樣)或具有非ascii字符的產品......應該有國際名稱。我還建議現在只使用URL中的ascii字符,因爲我注意到一些網站和瀏覽器傾向於將非ASCII字符擴展爲醜陋的百分比編碼。
IIS 7比Apache的麻煩了一點,但我認爲這可能爲你工作http://blogs.iis.net/bills/archive/2008/05/31/urlrewrite-module-for-iis7.aspx
下面是一個例子重寫規則,將剝離的名字從ID,只是ID傳遞給腳本。
IIS 7中的鏈接使用模塊上方
匹配URL
^([0-9]+)[^/]*/?$
行動
index.php?id={R:1} [QSA,L]
阿帕奇剛剛好messure;)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([0-9]+)[^/]*/?$ index.php?id=$1 [QSA,L]
這是一個PHP函數,它將生成友好URL的id名稱部分。
function friendlyURL($id, $title) {
$string = $title;
$paramcount = func_num_args();
for ($i = 2; $i < $paramcount; $i++) {
$string .= "-" . func_get_arg($i);
}
$string = preg_replace('`&(amp;)?#?[a-z0-9]+;`i', '-', $string);
$string = htmlentities($string, ENT_COMPAT, "utf-8");
$string = preg_replace("`&([a-z]+);`i", "", $string);
$string = preg_replace("`['\[\]]`", "", $string);
$tmp = $string;
$string = preg_replace(array("/[^A-Za-z0-9]/", "`[-]+`"), "-", $string);
$string = trim($string, '-');
return trim($id . "-" . $string, '-');
}
這將使你的URL喜歡
產品ID = 12345 NAME = 「極致超小工具」
/12345-acme-super-widget/
產品ID = 12345 NAME = 「日本產品ギター」
/12345-japanese-product/
This code is fantastic;謝謝。由於網站的動態特性,我無法通過IIS7控制面板手動添加條目。使用PHP將適當的重寫規則添加到web.config文件的最佳方式是什麼?再次感謝。 –
我從來沒有測試過這個選項,但據說它處理所有Apache樣式的mod重寫選項和每個目錄使用.htaccess文件。 http://www.micronovae.com/ModRewrite/ModRewrite.html – AWinter