管理描述性URL

时间:2009-07-25 20:41:22

标签: c# html asp.net-mvc seo

我注意到许多博客都使用如下所示的网址:

http://www.hanselman.com/blog/VirtualCamaraderieAPersistentVideoPortalForTheRemoteWorker.aspx

我认为这是为了搜索引擎优化。

如何从底层数据模型中读取?你真的搜索

VirtualCamaraderieAPersistentVideoPortalForTheRemoteWorker

在数据库中?

如果是,如何管理描述?如果它是一个密钥,那么规则一旦创建它就永远不会被更改,而不会破坏网络链接吗?

5 个答案:

答案 0 :(得分:4)

对于搜索引擎优化,它是正确的。但是,如果您使用短划线或下划线分隔单个单词,则效果最佳。

这些SE友好的网址部分通常称为 slugs url slugs 。 slug在您的应用程序中必须是唯一的,通常创建或检查它们的函数必须考虑到这一点。

就像其他任何事情一样,有多种方法可以实现这样的东西。通常,您存储有关数据库项的文本字符串,例如。文章标题。如果你不想存储它,你可以在加载时动态地将它转换为url slug,或者你可以在插入/更新时保存真实标题和url slug,并在加载时使用slug作为数据库选择标准相关页面。

如果您想要对您的应用程序保持超级健壮,您可以自动保存一个段塞历史记录,并在每次更换一个slug时生成“301 Moved Permanently”标题。

答案 1 :(得分:2)

通常在创建文章时,该字符串作为键存储在数据库中,是的。一些博客引擎(如Wordpress)允许您(作者)手动更改该字符串的内容,在您执行此操作后,指向旧字符串的链接将不再起作用。

在Wordpress中,他们称之为“永久链接”,尽管不同的引擎都有自己的名字。我不认为它有一个普遍的用语。

答案 2 :(得分:1)

搜索引擎友好的网址有不同的策略。根据您的示例URL,您可以搜索整个字符串,或使用C#哈希值作为(可能是非唯一的)键。无论哪种方式,如果标题被更改,链接到此页面将会中断。一种解决方案是在URL中嵌入一个额外的唯一键(例如,参见amazon.com)。

如果您对dasBlog处理网址的方式感兴趣,可以在http://www.dasblog.info/获取完整的源代码。

答案 3 :(得分:1)

VirtualCamaraderieAPersistentVideoPortalForTheRemoteWorker无法成为“帖子”表中的关键字,因为即使 真的 大博客也不会超过,比如说邮政表中有几千行。

如果您决定重写它,那么您可以为该网址创建301重定向,而不会对SEO造成太多损害。

但是,正如我在对你的问题的评论中所讨论的那样,对SEO这样的静态网址的影响是no longer relevant。真正的好处是让用户拥有一个在视觉上更容易导航的结构('hackable'url)。

谷歌不在乎网址是否说:

hanselman.com/blog/index.aspx?id=123

hanselman.com/blog/foobar.aspx

无论如何,排名都是一样的。

答案 4 :(得分:0)

阅读动态网址和Apache mod_rewrite。

同时检查此mod_rewrite rule generator

作为mod_rewrite可以为描述性URL做什么的一个例子,永久链接可能被认为是url:

 http://www.somesite.com/catalog.php?cat=widgets&product_id=1234

重写模块将创建更具描述性和更简单的内容:

 http://www.somesite.com/catalog/widgets-1234.html 

根据需要动态生成。我不确定这些映射中是否有任何映射在服务器端缓存以备将来使用,但我认为它不会使用大量的开销来处理规则。 以下是执行上述重写的规则,该规则放在.htaccess文件中:

 RewriteEngine On
 RewriteBase /
 RewriteCond %{QUERY_STRING} ^cat\=([^&]+)\&product_id\=([^&]+)$
 RewriteRule ^$ /catalog/%1-%2.html [R=301,

找到了此示例here

动态生成描述性URL并使其为永久链接内容提供服务并不需要太多开销。我认为他们根本不担心在数据库中存储或缓存规则。

搜索引擎优化爱好者强烈建议您创建一个google sitemap.xml来帮助谷歌索引这些(可能是无限的,或者到URL长度的上限,这是未定义的但是> 2000 char URL不会在许多浏览器中工作)静态生成的页面。只要规则具有确定性,它们也可能是永久性的。