cnn.com或foxnews.com等网站
他们在哪里存储所有文章?在HTML文件中?在数据库中?
更逻辑地将所有内容存储在DB中但是如何生成到DB内部的东西的静态链接?
并不是他们有一个动态页面加载如:LoadArticle.aspx?ArticleID = 123,每篇文章都有自己的地址。
请解释这是如何完成的。
答案 0 :(得分:4)
他们使用名为VoodooLib.dll的特殊内容管理库。
说真的,当您向数据库写入内容时,通常会生成某种唯一标识符 - 例如123。它与该记录(文章内容)永久关联。之后,它将用于在以后的任何时间生成与Url的一部分相同的ID。
至于静态链接,只需Url Rewriting。
您生成要在页面上显示的静态链接,因为它们对SEO更有效。当对该静态Url的请求命中服务器时,它将替换为“服务器友好”的内容,然后进行处理。
答案 1 :(得分:1)
他们可能使用某种形式的Content Management System(CMS)。有许多不同的 - 大多数将实际内容存储在数据库中或存储为XML(某些存储XML存储在数据库中)。他们将该内容发布为静态HTML页面,或者更常见的是,将其作为缓存的动态页面发布。许多人使用所谓的“友好URL”,这些URL是使用URL-rewriting techniques映射到实际物理文件路径的虚拟地址。
请注意,您无法仅通过扩展程序判断页面是动态还是静态。动态页面很可能以.html扩展名结尾。
答案 2 :(得分:1)
仅仅因为URL看起来“静态”并不意味着它;他们可以使用mod_rewrite或IIS ISAPI之类的东西来使URL更适合搜索引擎。
但是,对于您提到的大量新闻网站,他们可能会静态生成页面,以防止重复请求同一篇文章而导致数据库超载。
答案 3 :(得分:0)
看看这个页面的URl,它没有xxx.aspx?some-query-string
您正在使用友好的网址。
要做类似的事情,一种常见的方法是使用URL Rewrite和/或一些自定义HTTPModule
这是一个很好的参考:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx
答案 4 :(得分:0)
仅仅因为页面具有普通URL并不意味着它不提供动态内容。使用Apache mod_rewrite模块,可以操作URL。因此,例如,http://www.domain.tld/permalink/12345/message-title-slug之类的网页可以在内部转换为http://www.domain.tld/permalink/index.php?id=12345&slug=message-title-slug。
我不知道cnn.com和foxnews.com究竟使用了什么,但我敢打赌,他们使用的内容管理系统(CMS)动态地为所有页面提供服务,内容存储在数据库或文件系统中,以及通过特定的CMS执行创作/发布。
答案 5 :(得分:0)
只需检查cnn.com,文章链接就在其中
所有这些信息可以用来唯一地识别任何文章(实际上可能需要更少的文章)。可以通过某种URL重写方法轻松隐藏动态内容加载页面地址,然后使用请求的URL中的信息来确定要提供数据库中的哪篇文章。
答案 6 :(得分:0)
我不知道为什么所有其他的回答者似乎都认为创建友好的URL需要某种形式的URL重写。这根本不是真的。
完全可以编写将URL拆分为参数的Web服务代码 - 例如年,月,标题 - 并将其直接传递给从数据库获取内容的代码,而无需重写URL。大多数现代Web框架(如Django和Rails)都包含此功能。
答案 7 :(得分:0)
这是通过mod-rewrite技术完成的。
这是一篇关于mod重写引擎的文章:http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
这是他们的“指南”:http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
我希望有所帮助。它应该是一个很好的起点。古德勒克。