一篇文章把动态 URL、伪静态 URL、纯静态 URL 讲透彻

关于动态 URL、纯静态 URL 和伪静态 URL 的定义,我浏览过一些相关文章,但发现其中对这三个概念的解释还不够清楚。以下结合我的从业经验,并参考相关资料,力争用通俗易懂的语言,把这三个概念讲透彻。先简单了解一下三者的基本概念:

动态 URL: 指向服务器需要通过后端动态生成的网络地址。用户访问时,服务器接收到请求后,运行后端程序,根据请求参数获取相应的数据,再生成页面内容并返回给用户。

伪静态 URL: 我们平时常说的静态 URL,很多实际上都是伪静态 URL。它是通过服务器的 URL 重写技术(Rewrite),将原本包含动态查询参数的 URL 转换成外观简洁、具有一定语义的地址。这类 URL 看起来是静态的,但对应的页面仍需要后端动态生成。

纯静态 URL:指向服务器上已经生成好的 HTML 文件的网络地址。用户访问时,服务器根据 URL 找到对应的文件,并直接返回,无需执行后端程序或查询数据库来实时生成页面内容。

注:动态 URL、伪静态 URL 和纯静态 URL 的区别,不只是看网址表面长什么样,还要看其背后的运作方式。

举例说明什么是动态 URL

动态 URL 常见于使用数据库驱动的动态网站,例如采用 WordPress、Drupal、Joomla 等内容管理系统(CMS)搭建的网站,使用 ShopEx、ECShop 等电商系统搭建的网上商店,以及使用 Discuz 等论坛程序搭建的社区网站。

这类系统通常将文章、商品、订单等数据存储在数据库中,用户访问页面时,再由后端根据请求获取相应数据并生成页面内容。

简单来说,如果您使用此类建站系统,那么网站默认生成的通常是动态 URL。您可以通过后台设置、修改服务器配置或安装相关插件,将动态 URL 设置为伪静态 URL 形式(部分建站系统可能默认开启了 URL 伪静态功能)。但这只是改变了 URL 的展示样式,网页仍然需要后端动态生成,并不会因此变成真正的纯静态页面。

以 WordPress 为例,假设网站发布了一篇标题为《SEO 入门指南》的文章,在默认情况下,WordPress 会使用文章 ID 作为 URL 参数,例如 https://example.com/?p=123 而不是直接使用文章别名,例如 https://example.com/seo-guide 这样的形式。其中,?p=123 就是典型的动态 URL 表现形式。

举例说明什么是伪静态 URL


所谓伪静态 URL,其实就是动态 URL 的一种变体。它通过 URL 重写技术,将原本的动态 URL 转换成简洁、美观、易于理解的样式,看起来更像静态 URL,也就是我们常说的语义化 URL。

还是以刚刚的文章标题《SEO 入门指南》举例,WordPress 默认生成的动态 URL:

https://example.com/?p=123

经过伪静态设置后,可以变成:

https://example.com/seo-guide

两个 URL 依然对应同一篇文章,区别只是 URL 的展示形式不同,但网页本身仍然是动态生成的,其本质并没有改变。

另外需要注意的是,将动态 URL 转换为 伪静态 URL 后,原来的动态 URL 并不会失效,仍然可以正常访问。同一篇文章因此会对应多个不同样式的 URL。为了避免搜索引擎混淆,可以使用 Canonical 标签将页面的规范地址指向伪静态 URL,告诉搜索引擎哪个地址才是我们希望优先收录的版本。

关于 Canonical 标签的具体设置方法,可以参考这篇文章:Canonical 标签是什么?网站如何正确设置 Canonical 标签?

举例说明什么是纯静态 URL

纯静态 URL 对应的是服务器上已经生成的 HTML 文件。每个 URL 通常对应一个实际存在的网页文件。用户访问时,服务器只需要根据 URL 找到对应文件,返回对应的网页内容,不再通过后端查询数据库,动态生成页面。

早期制作网站时,很多人会使用 Dreamweaver 8 这样的网页编辑软件。先在软件中编写网页内容,制作好 HTML 页面,然后将这些文件上传到服务器。用户访问网站时,服务器直接返回对应的 HTML 文件,浏览器就能显示网页内容。这就是典型的纯静态网站。

现在也有 Hugo 这样的静态网站生成器。它可以依据文章内容和网页模板,在网站构建阶段提前生成 HTML 文件。网站部署完成后,用户访问页面时,服务器直接返回已生成好的文件,不再动态生成网页。

使用 WordPress 备份插件备份数据库时,通常会得到一个 SQL 文件。打开这个文件,您会发现里面并不是一篇篇独立的文章,而是按照数据库自身的存储规则保存的各种数据。虽然其中也能看到文章标题和正文等文字,但这些内容并不是可以直接阅读的网页。

纯静态 URL 则不同,它对应的是服务器上的具体 HTML 文件。我们可以直接下载这个文件,用浏览器打开,就能看到完整的网页内容。

重要提醒:严格来说,动态 URL、静态 URL、伪静态 URL 这些说法并不严谨,因为“动态”和“静态”描述的是网页本身的生成方式,而不是 URL 本身。更准确的叫法应当是“动态网页”与“静态网页”。

作者:段文杰
15 年以上SEO从业经验,GEO实战派,专注于为企业提供可落地的搜索流量增长方案。

发表回复