【问题标题】:Taking a hashed URL and sending it to a new URL获取散列 URL 并将其发送到新 URL
【发布时间】:2010-12-11 06:19:45
【问题描述】:

例如,我想让我的注册、关于和联系页面解析为不同的内容,但通过哈希标签:

三个链接,每个链接到注册、联系和关于页面 -

  • www.site.com/index.php#about
  • www.site.com/index.php#registration
  • www.site.com/index.php#contact

有没有办法使用 Javascript 或 PHP 将这些页面解析为分离的内容?

【问题讨论】:

    标签: php javascript hash tags url


    【解决方案1】:

    哈希不会发送到服务器,所以你只能用Javascript来做。

    检查location.hash的值。

    【讨论】:

      【解决方案2】:

      没有服务器端的方法可以做到这一点。您可以使用 AJAX,但这会破坏非 JavaScript 用户的网站。最好的方法可能是拥有服务器端内容 URL (index.php?page=<page_id>) 并使用 JavaScript 在本地重写这些 URL(到 #<page_id>)并使用 AJAX 处理内容加载然后。这样,您就可以为支持 JS 的设备提供哈希 URL,而其他人仍然可以使用该网站。

      但它确实需要一些冗余,因为您需要提供两次相同的内容,一次是通过 AJAX 包含,一次是通过适当的布局,所有内容都通过 PHP。

      如果您只是出于美观的原因想要哈希 URL,但又不想依赖 JS,那么您就不走运了。 URL 的语义对您不利:片段 ID 不应真正影响 URL 所指的内容,而只会影响该内容中的片段。 AJAX URL 正在改变这些语义,但如果您不必这样做,就没有充分的理由这样做。

      【讨论】:

      • 这看起来不错(也感谢 Slaks)。我会试一试,看看我得到了什么。可能需要进行相当多的测试 - 在任何 javascripting 中都非常生疏。
      【解决方案3】:

      我想你可能有充分的理由,但我能问一下,你为什么要这样做?它打破了人们普遍理解的 URL 中的哈希应该如何工作的标准,而且它只是在为与其他客户端的互操作性而招惹麻烦。

      【讨论】:

      • 这通常在 Gmail 等 AJAX-y 网站中完成,以允许用户保留浏览器历史记录和书签功能,尽管实际页面 URL 永远不会改变。
      • 有趣的技术,我以前没听说过。
      • 对 SEO 而言,有时从站点架构的角度来看,减少某些页面强加的链接“足迹”是有益的。对于这些类型的页面,它们对搜索结果并没有真正的帮助——它们只是为用户提供支持的页面,如果合并可以帮助强调其他内容/URL……有意义吗?
      • 对我来说听起来像是 SEO 巫术 :) 更好的是,我认为,将这些解析为真实页面,让它们链接回主页,并让 Google 将您识别为具有辅助页面的完整网站,而不是冒着让他们惩罚你违反网络标准的风险。
      • 只有误导用户才会受到惩罚。在这种情况下,不会产生误导 - 用户完全按照他们的期望行事,但从技术上讲可以带来潜在优势。
      【解决方案4】:

      您可以使用 PHP 的全局 $_REQUEST 变量来获取请求的 URL 并解析出主题标签...

      【讨论】:

      • 错了。标签通常不会发送到服务器,而是由用户代理处理。您可能正在考虑 cgi 参数,而不是哈希(或片段标识符)。
      • Hashtags 在请求中被发送到服务器。在公共社区中说错人之前,请自己检查一下。
      • 很抱歉让您失望了,但您错了httpbin.org/get#wat 请注意“url”的含义。您正在考虑 GET 参数:httpbin.org/get?hashtag=i-think-not - 您在谈论 $_REQUEST(在本例中只是委托给 $_GET)这一事实应该是一个明显的线索。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多