`

URL细节

    博客分类:
  • java
阅读更多

 本文转自http://www.20ju.com/content/V152073.htm

 

    URL 设计是 Web 设计中常被忽视的东西,事实上 URL 非常重要,这不仅是一个网页唯一的路径,还涉及到你的站点是否干净,友好。本文讲述 URL 这个司空见惯的 Web 元素中包含的大量不应为忽视的知识,准则与最佳实践。需要注意的是 W3C 建议使用 URI 取代 URL 一说

 

关于 URL 的一些准则
首先是与 URL 有关的一些准则。

 

一个 URL 必须唯一地,永久地代表一个在线对象

URL 的最基本的使命是唯一地代表 Internet 上的一个对象,URL 必须和 Internet 上的对象一对一匹配。然而现实中,这很难实现,我们经常可以通过多个 URL 到达同一个页面,比如, http://mysite.com/product/tv 和 http://mysite.com/product?name=tv,这种情形在现代 CMS 中更是比比皆是,针对这个问题,SEO moz 有一篇很好的文章,讲到了如何使用 Canonical URL 机制解决站点中的重复 URL 问题

 

URL 应该是永久的,这就要求你在站点上线前就非常严谨地规划 URL。如果有一天,你不得不更改 URL,一定使用 HTTP 301 机制,告诉浏览器和搜索引擎,你的那个 URL 所代表的对象,已经搬迁到新地址,这个机制可以保证你旧地址所获得 PR 不会被清零。

 

尽可能用户友好

 

这是 URL 设计的根本,你的 URL 应该为最终用户而设计。保持 URL 友好的一个好办法是在保证可读性的同时让它尽可能短。比如 /about 就好过 /about-acme-corp-page,当然,保持简短不能牺牲可读性, /13d2 一类的地址短则短矣,但并不友好。如果要在 Twitter, Facebook 一类的社会媒体网络分享你的 URL,可以使用 Bit.ly 一类的网址缩短工具,但这种工具产生的缩短 URL 并不友好,在 Wordpress 一类的 CMS 中,可以使用 PrettyLink Pro 或 Short URL plugin 一类的可控制的地址缩短插件。

 

 

URL 的设计切忌使用一些对用户来说没有意义的内容,比如数据库的 ID 号, /products/23 这样的 URL 地址对用户是极不友好的,应当使用 /products/ballpoint-pen 一类的地址。

 

保持一致性

 

站点内的所有 URL 必须保持一致的格式和结构,这样可以为用户带来信任感,如果你必须更改 URL 格式和结构,需要使用 HTTP 301 机制。

 

可预测的 URL

 

这也是 URL 一致性的一个表现,如果你的 URL 拥有很好的一致性,用户可以根据 URL 猜测别的内容的 URL,假如 /events/2010/01 指向 2010 年 1 月份的日程内容,那

 


  • /events/2009/01 应当指向 2009 年 1 月的日程。
  • /events/2010 应当指向 2010 年全年的日程。
  • /events/2010/01/21 应当指向2010年1月21日的日程。

 

URL中的关键词

 

URL 中应该包含本页重点内容的关键词,比如 /posts/2010/07/02/trip-best-buy-memory-cards 一类的 URL 本身就是对页面内容的反应。在 URL 包含重点内容关键词,也可以提高 SEO 性能。SEO 的一个很重要的原则就是,在 URL 地址中包含内容关键词。
关于 URL 的技术细节
下面说的是有关 URL 的一些技术细节。

 

URL 不应包含 .html, aspx, cfm 一类的后缀

 

这类信息对最终用户是没有意义的,却占了额外的空间,一个例外是 .atom, .rss, .json 一类的特殊地址,这类地址是有特别的意义的。译者注:在某些虚拟主机式 Web 服务器,这种做法未必现实。

 

URL 不应包含 WWW 部分

 

WWW 部分并不包含任何意义,是一个额外的负担,不友好。可以使用 HTTP 301 机制,将 www.domain.com 定向到 domain.com 。

 

URL 的格式

 

URL 的格式如下:

 

domain.com/[key information]/[name]/?[modifiers]

 

Key information 部分一般代表信息的类型或类别。Modifiers 部分则属于查询字符串范畴,它不应当代表数据结构,应当代表数据的修饰。Key information 部分应当尽可能简短,同时应当表现出一种层级关系,比如 http://domain.com/posts/servers/nginx-ubuntu-10.04,或 http://domain.com/news/tech/2007/11/05/google-announces-android。

 

Google News 对新闻源有一个有趣的要求 ,Google 要求新闻源页面的 URL 中必须包含至少 3 位唯一的数字,因为他们会忽略年份数字,因此,应该使用一个5位或5位以上的数字。另外,也应该提供 Google News 站点地图 。如果你想向 Google 提供新闻,必须按这样的结构提供 URL,当然保持一致性,可以预测性也是必需的。

 

使用小写字符

 

URL 中所有字符都应使用小写,这更容易阅读。

 

URL 中包含的行为元素

 

URL 查询字符串中可能包含一些表示行为的元素,比如 show, delete, edit 等。非破坏性的行为可以体现在 URL 中,破坏性的行为应该使用 POST 。

 

使用 URL 友好字符

 

在 URL 中体现网页标题的时候,往往会用到一些特殊字符,应当把它们转换为 URL 友好字符:

 


  • 全部大写字符换成小写
  • 诸如 é 一类的字符应转换成对应的 e
  • 空格使用短划线代替
  • 诸如 !, @, #, $, %, ^, &, * 一类的字符应该使用短划线代替
  • 双短划线应该使用单短划线代替

 

另外,没有必要的话,避免使用 %20 一类的 URL 逃逸符。

 

更多观点

 

Chris Shiflett 建议,可以使用一些类似句子的 URL,如:

 

chriscoyier.net/authored/digging-into-wordpress/
chriscoyier.net/has-worked-for/chatman-design/
chriscoyier.net/likes/trailer-park-boys
jacobwg.com/thinks/this-post/is/basically-done

 

译者补充:URL 的长度上限

 

URL 的最大长度是多少?W3C 的 HTTP 协议 并没有限定,然而,在实际应用中,经过试验,不同浏览器和 Web 服务器有不同的约定:

 


  • IE 的 URL 长度上限是 2083 字节,其中纯路径部分不能超过 2048 字节。
  • Firefox 浏览器的地址栏中超过 65536 字符后就不再显示。
  • Safari 浏览器一致测试到 80000 字符还工作得好好的。
  • Opera 浏览器测试到 190000 字符的时候,还正常工作。

 

Web 服务器:

 


  • Apache Web 服务器在接收到大约 4000 字符长的 URL 时候产生 413 Entity Too Large” 错误。
  • IIS 默认接收的最大 URL 是 16384 字符。
分享到:
评论

相关推荐

    urlcode解码-HTTP:URL编码解码

    在HTTP中,URL(统一资源...这可能是一个用于处理编码和解码任务的程序,但没有更多的上下文信息,我们无法提供具体的细节。在使用任何未知的exe文件时,应谨慎行事,确保它是来自可信任的源,并且符合你的安全策略。

    URL编码 URL编码

    URL编码,全称为统一资源定位符(Uniform Resource Locator)编码,是互联网上用于标识资源的一种...在日常工作中,我们应该时刻注意URL编码的细节,确保数据的正确传输和解析,从而提升应用程序的稳定性和用户体验。

    URL抓包工具

    而URL抓包工具则可以捕获这些请求,让我们能够看到背后的交互细节。 smsniff工具的主要功能包括: 1. 数据包捕获:smsniff能够实时监控网络流量,捕获所有进出的HTTP请求和响应。这对于开发者调试网页应用、了解...

    JS验证URL函数 正则

    ### JS验证URL函数正则详解 ...对于需要高度定制化验证逻辑的应用,推荐使用第一个函数,因为它覆盖了更多的URL细节;而对于简单的需求,后两个函数就足够用了。在实际应用中,还需要根据具体情况进行调整和完善。

    UrlReWrite(Url重写或伪静态)完美示例源码

    - 通过对这些源码的分析,可以深入理解Url重写技术的实现细节,包括如何定义规则、如何匹配和处理请求。 6. **实践与优化** - 实践中应考虑URL的可读性、可扩展性和可维护性,避免过度重写导致的复杂性。 - 避免...

    url_decoder_v3.0 url编解码工具

    《URL编码与解码:深度理解与应用》 在互联网通信中,URL(Uniform Resource Locator,统一..."url_decoder_v3.0"这样的工具,正是为了解决这方面的实际需求,使得开发者能够更加专注于业务逻辑,而非底层的编码细节。

    C#获取当前页面的url

    ### C# 获取当前页面的URL 在Web开发中,经常需要获取当前页面的URL以便进行进一步的操作或处理。本文将详细介绍如何使用C#在ASP.NET应用...了解这些细节有助于开发者更好地控制和管理Web应用中的数据流和导航逻辑。

    .net实现url重写

    8. **隐藏技术细节**:通过URL重写,可以隐藏实际的动态脚本路径,避免暴露系统架构信息,增强安全性。 在提供的压缩包文件中,"ProUrl"可能是包含作者实现的URL重写功能的源代码项目,而"url rewrite"可能是相关的...

    易语言URL解码算法

    易语言是一种专为中国人设计的编程语言,它以简明的中文语法...在实际编程中,我们需要注意各种编码细节,以确保URL解码的正确性和兼容性。通过学习和理解这些知识点,开发者可以更好地处理网络数据的编码与解码问题。

    微软URL重写文件

    这样做的主要目的是为了提高SEO(搜索引擎优化)、提供更易于理解和记忆的链接、隐藏技术细节以及更好地管理复杂的网站结构。 微软的HttpModule是实现URL重写的一种方式。HttpModule是IIS(Internet Information ...

    易语言url编解码汇编

    开发者可以通过阅读和学习这些源码,了解URL编解码的具体实现细节,从而提高自己的编程技能。 源码的学习不仅可以帮助理解编码和解码的过程,还可以了解到易语言如何与底层硬件交互,以及如何处理字符串操作。对于...

    URLRewrite配置和使用

    使用URLRewrite可以隐藏网站的技术实现细节,从而提高网站的移植性。例如,我们可以使用URLRewrite将JSP页面重写成静态HTML页面,从而提高网站的加载速度和可移植性。 3. 满足美感的要求 使用URLRewrite可以将我们...

    urlrewrite.dll

    3. **隐藏实现细节**:动态URL可能暴露了程序的内部结构,而伪静态URL则可以避免这种情况,提高安全性。 4. **移植方便**:由于URL重写规则通常独立于应用程序代码,因此在更换服务器或Web框架时,只要保持Url...

    IIS URL 重写模块工具

    3. **隐藏技术细节**:隐藏网站内部路径,提高安全性,防止敏感信息泄露。 4. **URL路由**:将请求转发到不同的处理程序或服务器,实现负载均衡和故障转移。 5. **兼容性**:支持多种重写规则,如正则表达式,与...

    Android中url获得图片

    ### Android中通过URL获取图片的方法解析 在Android开发过程中,经常需要从网络上加载图片到应用中。本文将详细介绍如何利用...需要注意的是,在实际项目开发中还应考虑更多细节与优化方案,以满足更复杂的应用需求。

    pb8888_GetURL_

    标题 "pb8888_GetURL_" 暗示我们关注的是一个与“pb”(可能是Protocol Buffers或...要了解更多细节,需要查看 pb8 压缩包内的文件,这些文件可能包含protobuf定义、客户端代码、服务器端接口定义或其他相关文档。

    asp.net 中的url重写

    - **隐藏技术细节**:避免暴露不必要的服务器路径和参数,提高安全性。 3. **ASP.NET URL重写实现方式**: - **URLRoutingModule模块**:ASP.NET框架自带的URLRoutingModule模块,用于处理URL重写。通过配置`web....

    ABAP url下载文件

    通过上述步骤,我们已经了解了在 ABAP 中如何通过 URL 下载文件的关键流程和技术细节。这不仅包括了创建 HTTP 客户端、设置请求头、发送请求、接收响应以及处理响应数据等环节,还涉及到了异常处理和状态码校验等...

    JAVA线程根据给定URL生成网页快照

    你可以解压文件,查看其中的代码以获取更具体的实现细节。 总结来说,生成网页快照涉及的关键知识点包括: 1. 使用`java.net`包发起HTTP请求 2. 使用Jsoup解析HTML文档 3. 多线程处理多个URL,使用`java.util....

    URL编解码组件

    组件的`encode()`函数会处理这些细节,确保URL的安全传输。 2. **解码**:相反,解码过程将%加两位十六进制数的形式还原为原始字符。`decode()`函数会识别并转换这些编码序列,恢复URL的原始内容。 3. **编码规则*...

Global site tag (gtag.js) - Google Analytics