什么是“友好 URL”? [关闭]

2024-04-20

我最近(在本网站和其他地方)阅读了大量有关“友好 URL”的讨论,但我不确定究竟是什么使 URL 变得“友好”,以及为什么我们真正关心(在某种程度上) 。插图:

以下是当前大多数 Web 开发人员认为“友好”的 URL 示例:

www.myblog.com/posts/123/this-is-the-name-of-my-blog-post

然而这会被认为是“不友好的”(即不好的、尼安德特人的、无知的、愚蠢的):

www.myblog.com/posts.aspx?id=123

我的问题:

  • “友好”URL 是否包含有关相关博客文章的重复标识信息?换句话说,一旦你有了帖子的 id (123),为什么还需要标题呢?这不是违反了“不要重复自己”的信条吗?
  • 对于用户而言,URL 的形式有何不同?用户是否真的曾经type手动获取完整 URL(当然,TLD 除外)?用户是否曾经通过查看页面的 URL 来确定该页面的内容?为什么我们需要在 URL 中包含博客文章的标题?页面不是这样的吗<title>标签和内容的用途是什么?
  • 我经常听到 SEO 作为首选“友好”URL 形式的原因。为什么搜索引擎蜘蛛会关心 URL?它们不只是抓取页面(以及其中包含的其他页面的链接)的自动化软件吗?如果搜索引擎像其他软件组件(例如数据库访问组件)一样编写,那么 URL 对它们来说只是一个毫无意义的标识符(类似于关系数据库中的 rowguid)。如果我设计一个数据库模式,使用上面的“友好”URL 作为表的主键,我会(非常正确)被淘汰。

我之前说过“在某种程度上”是因为显然,URL 可能会失控。这是来自 Amazon.com 的实际 URL,我认为任何头脑正常的人都不会认为它是“友好的”:


蒂姆·伯纳斯·李(万维网的建筑师)写道关于这个主题的一篇很棒的文章 http://www.w3.org/Provider/Style/URI大约10年前。

  • 你的例子是一个糟糕的URL——但不仅仅是因为它同时有一个id和一个“slug”(页面标题的缩写、连字符形式)。从长远来看,将页面标题放入 URL 中是有问题的。内容will随着时间的推移而变化。如果您更改了该博客文章的标题,您将被迫在保留旧 URL 或更改 URL 以匹配新标题之间做出选择。更改 URL 将破坏该页面之前的所有链接;不更改它意味着您将拥有一个与页面不匹配的 URL。这对用户来说都没有好处。最好一起去www.myblog.com/posts/123.

  • 用户通常确实需要键入 URL,但更重要的是,有时他们还会编辑现有 URL 以查找网站中的其他页面。因此,拥有可发现的 URL 通常是件好事。例如,如果我想查看帖子 #124,我可以轻松查看当前 URL,并得出我想查看的页面的 URL 是 www.myblog.com/posts/124。这种用户友好程度可以为人们寻找所需的内容提供很大帮助。包含其他信息(例如帖子的主题)可能会使这变得不可能——因此它减少了我的探索选择。

  • 忘记搜索引擎优化。一段时间以来,搜索引擎技术一直在降低 SEO 黑客的效率。好的内容仍然是王道——从长远来看,你将无法欺骗这个系统。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是“友好 URL”? [关闭] 的相关文章

  • php/mysql:自定义站点搜索

    首先 我无法使用 sphinx 因为我使用共享托管 我不喜欢谷歌解决方案 即 自定义搜索有这些愚蠢的广告 而且网站搜索不是免费的 我想自己创建搜索机制 我有页面表 我想通过关键字搜索页面内容 在结果页面上我想显示与所需关键字匹配的部分文本
  • 深层复制 System.Windows.Forms.WebBrowser 对象/恢复状态

    本质上 我想要做的是复制一个 WebBrowser 对象 以便我可以执行相当于 在新选项卡中打开 或 在新窗口中打开 操作 从而维护任何已发布的数据 我不仅仅想导航到与原始 WebBrowser 对象中相同的 URL 而是想重复 HttpW
  • 以编程方式登录网站的技术

    我正在尝试自动登录 Photobucket 以供 API 使用 用于需要使用存储的凭据自动下载照片的项目 API 生成一个用于登录的 URL 并且使用 Firebug 我可以查看正在发送 接收的请求和响应 我的问题是 如何使用 HttpWe
  • Android - 使用 Android 支持库时无法在 SearchWidget 中找到 TextView

    我使用以下代码片段在 SearchView 小部件中查找 TextView int autoCompleteTextViewID getResources getIdentifier android id search src text n
  • 从应用程序注销后阻止浏览器中的后退选项

    我正在开发 ASP NET 应用程序 我想阻止用户在从应用程序注销后使用浏览器中的后退按钮查看上一页 感谢您的所有回复 Code Response Cache SetCacheability HttpCacheability NoCache
  • Outlook 添加、文本框、删除\退格键不起作用

    我开发了一个 Outlook 插件 自定义任务窗格 在用户控件中带有 Web 浏览器 当我在网络浏览器的文本框中写入内容时 退格键或删除按钮旁边的所有功能都运行良好 但我无法使用这些键 我是否遗漏了什么 我迟到了几年 但我设法解决了这个问题
  • php/mysql 搜索多个值

    我有一个带有 国家 城市 地区 已发布 字段的表格 我有一个搜索表单 人们可以在其中输入国家 城市或地区 我想要获取所有已发布的房屋 1 并且任何搜索词都与其任何字段相匹配 这是我到目前为止所拥有的 SELECT FROM homes WH
  • 如何检测用户操作系统

    我有以下代码来获取用户详细信息 HttpBrowserCapabilities bc HttpContext Current Request Browser string UserAgent HttpContext Current Requ
  • AJAX + SEO 快速问题

    当用户希望在页面加载之间发生效果 即旧内容淡出然后新内容返回 时 我通常按如下方式构建网站 index php about php 等
  • 如何查看远程脚本被阻止时返回的内容

    我在我的 web 应用程序中使用 Google 托管的 jQuery ajax googleapis com ajax libs jquery 1 8 3 jquery min js 作为错误诊断的一部分 我有一个 window onerr
  • Excel VLOOKUP 和 SEARCH 组合

    我试图在文本列中搜索文本字符串的一部分并返回第二列 希望这通过一个示例更有意义 请注意 这个示例是编造的 我无法发布我正在使用的确切数据 但这与它类似 例如 A D E Really good dog Good dog text1 red
  • 测量渲染时间的工具

    是否有工具可以测量页面上元素的实际渲染时间 我指的不是资源的下载时间 而是浏览器渲染某些内容所花费的实际时间 我知道这个时间会根据客户端计算机上的因素而有所不同 但对于了解渲染引擎需要一段时间加载的内容仍然非常方便 我想这应该是一个有用的实
  • SOLR - 过滤器查询中的正则表达式

    我想在 fq 中实现 Regex 但以前从未实现过 我的属性中有以下值 字段类型为 小写 Prop company1 city1 state1 country1 高级分析化学家 芝加哥 我想根据正则表达式过滤结果 正则表达式应该与上面的内容
  • 如何使用 C# 获取 Mozilla 浏览器的当前位置 URL? [复制]

    这个问题在这里已经有答案了 可能的重复 获取 Firefox 网址 https stackoverflow com questions 430614 get firefox url 我在开发 Windows 应用程序以获取正在运行的 Moz
  • 由于 JavaScript 没有太多权限,病毒如何通过浏览器进入 PC?

    我想知道浏览器如何允许病毒传播到我们的计算机 我们收到的响应是文本响应 响应中唯一可执行的东西是 JavaScript 它没有太多权限 是什么让浏览器倾向于将某些文件传递到计算机 短名单 浏览器插件 一般来说 ActiveX 尤其是 Fla
  • 使用 javascript 在网络浏览器中 Ungzip csv 文件

    我想从网络服务器下载 gzip 压缩的 csv 文件 然后在浏览器中解压 到目前为止我已经尝试使用pako and zlib将文件压缩到我的服务器上 但遇到了各种问题 尝试解压缩 unix gzipped 文件时 我不断收到错误的标头消息
  • 如何在我的网站中创建全局搜索[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在我的网站中创建全局搜索 该网站是内部网站 无法在网上使用 我无法使用 Google 搜索来实现此目的 我的信息全部存储在不同的
  • 将搜索图标添加到输入框

    div div
  • jquery是如何实现$(document).ready()的?

    jquery是如何实现的 document ready 当然我可以阅读代码 但我正在寻找这个概念 概念 jQuery ready http api jquery com ready 虽然 JavaScript 提供了在渲染页面时执行代码的
  • 如何实现 IFilter 来索引重量级格式?

    我需要为 Microsoft Search Server 2008 开发一个 IFilter 它执行长时间的计算来提取文本 从一个文件中提取文本可能需要 5 秒到 12 小时 我如何设计这样的 IFilter 以便守护进程不会在超时时重置它

随机推荐

  • Ant JUnit ClassNotFoundException

    我意识到有很多类似的问题this one https stackoverflow com questions 10658636 new to ant classnotfoundexception with junit 但是在阅读了其中的大多
  • 键盘覆盖了 webapp 中的文本输入(iOS)

    我正在开发一个网络应用程序 屏幕下半部分有两个输入字段 父视图绝对定位于屏幕 通常 人们会假设单击输入字段时 焦点会强制输入进入键盘上方的视图 但是 键盘覆盖了输入字段 如果我开始打字 则该字段中不会输入任何内容 为了在字段中输入内容 我必
  • 匿名子类化 TimerTask 的正确方法是在 run 方法中保留对“this”的引用

    我子类化了TimerTask使用匿名 具体 类 这样 public void setTimedTask Note this implements an interface called UpdateIndicatorsReceiver fi
  • localStorage,使用toggleClass保存类

    我似乎对本地存储一无所知 我想通过切换类来设置一种最喜欢一组 div 中的任何 div 的方式 我可以让toggleClass在单个div上工作并保存 但localStorage将所有div保存为收藏夹 而不仅仅是设置了toggleClas
  • 选择子子项中的最新记录

    我有以下表格 列 Parent ParentID Child ChildID ParentID SubChild SubChildID ChildID Date Parent与 具有一对多关系Child Child与 具有一对多关系SubC
  • 在 ReactJS 环境中设置复选框样式

    我正在尝试设计一个复选框的样式ReactJSIE11 的环境 但似乎没有取得太大成功 有人可以建议吗 代码如下 CSS squared input type checkbox border radius 4px background ff0
  • 当鼠标位于 Qt 窗口的自定义小部件上时,如何移动整个窗口?

    假设我有一个自定义小部件并将其添加到 qt 的主窗口中 如您所见 红色区域是自定义小部件 我想要做的是 当鼠标在红色区域按下并移动时 整个窗口也会移动 我知道如何简单地实施mousePressEvent and mouseMoveEvent
  • python SMTP 未收到邮件

    你好 我正在尝试让 python 3 从 Ubuntu 发送一封简单的电子邮件 我启动了一个简单的 smtp 服务器 python m smtpd n c 调试服务器本地主机 1025 以下是我的电子邮件服务器的代码 import smtp
  • 我应该如何对长函数进行单元测试?

    如果我有一个很长的代码方法 它从 2 个或 3 个不同的源收集数据并返回结果 我如何重构它以使其更易于单元测试 该方法是一种网络服务 我想从客户端代码进行一次调用来收集所有数据 我可以将一些部分重构为更小的方法 这将更易于测试 但当前方法仍
  • ion-slide-box 更新问题

  • 自定义分配器与承诺和打包任务

    标准的分配器构造函数是promise packaged task应该仅将分配器用于状态对象本身 或者应该保证这一点all 内部 相关对象 futures promise 为共享状态分配内存 futures task members 分配存储
  • Rails - 如何在不使用accepts_nested_attributes_for的情况下管理嵌套属性?

    我的问题是我遇到了accepts nested attributes for的限制 所以我需要弄清楚如何自己复制该功能以获得更大的灵活性 请参阅下文 了解到底是什么让我困惑 所以我的问题是 如果我想模仿和增强accepts nested a
  • 我应该使用 jquery 中的哪个或哪个插件来使用 xml 文件内容填充 html 表?

    我需要显示来自服务器的 xml 文件的数据 文件路径类似files client xml 到 html 表或 datagrid 中 我应该使用哪个插件 或者更确切地说 我应该使用什么插件 以便它具有可变分页 过滤器和表 CSS 自定义 任何
  • 如何从 C# 中的字符串中删除所有空白字符?

    亲爱的程序员朋友们 我正在 C Visual Studio 2013 中编写一些代码 我刚刚意识到我可能不需要使用Trim 当我做Replace string Empty 示例如下 SanitizedString RawString Rep
  • 作为 Windows 服务运行时的 PCSC.InvalidContextException

    我一直在使用 pcsc sharp 库开发一个小型智能卡扫描仪应用程序 该应用程序作为控制台应用程序运行时工作正常 代码如下 using System using System Collections Generic using Syste
  • Skype 笑脸 REGEXP 模式在哪里/如何获得?

    我想了解他们用于笑脸的图案 如果表情符号仅在被空格包围或 大概 在行 字符串的开头 结尾处被替换 那么您可以使用一系列正则表达式 使用此列表 取自http www skype forum com ftopic13197 html http
  • 在 Papyrus UML 模型中使用 MARTE GQAM 构造型

    我正在尝试使用 MARTE GQAM 构造型来构造模型的某些元素 但在为其某些属性赋值时遇到麻烦 例如 我将两条生命线之间的消息定型为 我想为其 hostDemand 属性分配一个值 该属性应为 NFP Duration 实例 我看不到如何
  • TensorFlow Lite 量化无法改善推理延迟

    TensorFlow 网站声称量化可将移动设备上的延迟降低多达 3 倍 https www tensorflow org lite performance post training quantization https www tenso
  • PHP 避免浏览器在页面刷新时重新发布 $_POST?

    我想知道我可以使用哪些技术来避免用户在刷新页面并再次选择提交时两次发布表单 例如我里面有表格注册 php并在内部处理它注册 php 1st我可以在另一个文件中处理 例如注册进程 php并重定向到 register php 但随后我必须创建大
  • 什么是“友好 URL”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近 在本网站和其他地方 阅读了大量有关 友好 URL 的讨论 但我不确定究竟是什么使 URL 变得 友好 以及为什么我们真正关心