`
seekgirl
  • 浏览: 79099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

关于 URL 的一些不可不知的知识

阅读更多


2 人关注此新闻, 

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 ProShort 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 字符。

本文国际来源:css-tricks.com Guidelines for URI Design

中文翻译来源:锐商企业CMS 网站内容管理系统 官方网站

本站文章除注明转载外,均为本站原创或编译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区
转载请注明:文章转载自:开源中国社区 [http://www.oschina.net ]
本文标题:关于 URL 的一些不可不知的知识
本文地址:http://www.oschina.net/news/11105/url-knowledge

分享到:
评论

相关推荐

    软件工程师不可不知的10个概念

    ### 软件工程师不可不知的10个概念 在当今快速发展的信息技术领域,软件工程师作为推动技术进步的关键角色之一,必须掌握一系列核心概念和技术。本文将深入探讨这些概念,并结合部分给定的内容进行详细解释。 ####...

    网络搜索知识技巧

    雅虎作为曾经的互联网巨擘,在某些特定领域仍具有不可忽视的优势。 **雅虎搜索引擎顶级使用技巧之二** 例如利用雅虎财经进行股市分析等。 通过以上内容,我们可以看到网络搜索不仅涉及到了搜索引擎本身的应用技巧...

    通俗易懂的WordPress函数简明教程借鉴.pdf

    《通俗易懂的WordPress函数简明教程》是一篇专为WordPress初学者编写的教程,源自月夜的《用好WordPress不可不知的函数》。本文旨在帮助读者理解和掌握WordPress中的常用函数,以便更好地自定义和优化自己的博客。...

    java面试题-读书笔记-面试失败一次就记录一次的坑-不知不觉已经这么多了.docx

    - **String** 是一个不可变类,意味着一旦创建,其内容就不能更改。这是由于String在Java中被声明为final,确保了它的不可变性。 - **StringBuffer** 和 **StringBuilder** 都是用来处理可变字符串的类。它们在...

    Wordpress函数详解

    这段代码在博客首页可能显示为:“月夜 – 分享网络知识·享受快乐生活”,在文章页则可能显示为:“用好WordPress不可不知的50个函数 | 月夜 – 分享网络知识·享受快乐生活”。 #### 3. `wp_get_archives()` 函数...

    大名鼎鼎SWFUpload- Flash+JS 上传

    从中可以看到既定的设计是当不返回任何值的时候应该等同于返回true,但是笔者在开发中发现必须明确返回值,否则上传进程将停止响应,不知是否是一个bug呢?  - 传入参数  file object:文件对象  + ...

    网页制作程序作业

    1.“世间安得有奇…”(姚羹湖)之言——世间确有奇,且未必事事都可解,不可解处不必强解,不能解未必是无知。马未都先生论收藏曾言此,杨琪老师讲梵高曾言此。 2.“考据家不足与言诗”(张箦斋)——就像读史必究...

    JsoupDemo for java

    以下是一些关键知识点: 1. **解析HTML**:Jsoup可以将HTML字符串或文件转换为一个`Document`对象,这个对象代表了整个HTML文档的结构。例如,可以使用`Jsoup.parse()`方法来解析HTML内容。 2. **选择器(Selector...

    接口文档1

    * fxnotifyurl:异步通知地址,是异步接收支付结果通知的回调地址,通知url必须为外网可访问的url,不能携带参数。 * fxbackurl:同步通知地址,是支付成功后跳转到的地址,不参与签名。 * fxpay:请求类型,是请求...

    ssm框架学习,很适合初学者

    IOC使得对象之间的依赖关系得以解耦,提高了代码的可测试性和可维护性;而AOP则允许开发者在不修改原有业务逻辑的情况下,插入额外的功能,如日志记录、事务管理等。 SpringMVC是Spring框架的一部分,专门用于处理...

    android中音频和视频的播放

    在Android平台上,音频和视频的播放是移动应用开发中不可或缺的一部分。本文将深入探讨如何在Android中使用不同的组件和技术来实现音频和视频的播放功能,包括`MediaPlayer`媒体播放器、`SoundPool`音效池以及`...

    休闲斗地主小游戏 v1.0

    MySQL则是一款开源的关系型数据库管理系统,以其高速、稳定和可扩展性闻名,是处理大量数据的理想选择。 在系统设计上,"休闲斗地主小游戏 v1.0"遵循了经典的三人斗地主规则,这是一种流行于中国的扑克牌游戏,玩家...

    亮剑.NET深入体验与实战精要2

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    亮剑.NET深入体验与实战精要3

    本书既考虑到实际开发中经常遇到的困惑和难题,也分析了解决问题的思路和方法,更总结出项目开发中不可或缺的技术点及思想。读者可以在欣赏一个个有趣例子的过程中,不知不觉具备开发真正商业项目的能力。 本书集...

    【 React 项目 】- 电影项目

    它允许我们在不刷新整个页面的情况下导航到不同的URL,提供路由配置和组件化的路由。 4. **API接口调用** - **获取电影数据**:项目可能通过调用第三方API,如IMDb或The Movie Database (TMDB),获取电影信息。这...

    仿探探交友小程序源码,修复版充值接口 7.0.2

    【标题】"仿探探交友小程序源码,修复版充值接口 7.0.2" 涉及的知识点: 1. **小程序开发**:此项目是一个基于微信小程序的社交应用,模仿了知名的探探应用,提供用户交友功能。小程序是一种轻量级的应用形态,无需...

Global site tag (gtag.js) - Google Analytics