【发布时间】:2011-01-16 21:46:59
【问题描述】:
我创建了一个具有层次结构并具有搜索引擎友好 (SEF) 网址的网站,例如:
/seeds-1/
/seeds-1/fruits-2/
/seeds-1/fruits-2/black-berries-5/
/seeds-1/fruits-2/blue-berries-6/
/seeds-1/fruits-2/strawberries-7/
/seeds-1/vegetables-3/
/seeds-1/vegetables-3/potato-8/
/seeds-1/vegetables-3/onion-9/
/seeds-1/vegetables-3/cabbage-10/
/seeds-1/flowers-4/
/seeds-1/flowers-4/red-rose-11/
/seeds-1/flowers-4/tulips-12/
等等。您会注意到末尾的数字是 ID。现在我已经完成了网站和所有事情,一位“顾问”介入并告诉我的客户“...... url 不是 100% 搜索引擎友好的,要让它们 100% 搜索引擎友好,必须删除数字...”。我显然无法与“顾问”交谈,因为他们已经完成了他们的工作并且消失了。
如果有人能指出这两种 URL 的优点和缺点,我将不胜感激。我需要一些可靠的论据来说服客户,而且我真的需要知道我在为我的网站选择这种 URL 方案时是否犯了错误。
编辑----
可能是我太懒了。重写规则如下:
RewriteRule ^[^/]+-([0-9]+)/$ object.php?ObjectID=$1
RewriteRule ^[^/]+-([0-9]+)/[^/]+-([0-9]+)/$ object.php?ObjectID=$2
.
.
.
从查询字符串中提取 ObjectID,将其转换为整数并在 SQL 查询中使用它相当容易。我认为在查询中使用文本比较(WHERE Name = '%s')比使用整数比较(WHERE ObjectID = %d)要慢,因此我很犹豫。问题更像是是否值得以降低编码/性能友好性为代价使 URL 更人性化。
【问题讨论】:
-
如果你分层展示你的数据,那么你也应该分层存储。
-
示例被混淆了,我与 FarmVille 无关 :) 我实际上有两个场景来实现这个:#1 有一个表,递归关系,无限深层次 #2 有 6 个表,正好 6 层深
标签: url mod-rewrite url-rewriting seo