【问题标题】:change url into hash fragment variant将 url 更改为哈希片段变体
【发布时间】:2012-01-10 15:23:11
【问题描述】:

它看起来不像简单的散列 pushState,因为它确实改变了整个 url。

没有页面刷新 + 它通过将其全部切断并将其作为哈希片段再次推送到 url 来完全更改 url。请查看以下示例。

例如访问网址: http://www.couverts.nl/restaurant/13233/jo-van-den-bosch/den-bosch

立即更改为: http://www.couverts.nl/#/restaurant/13233/jo-van-den-bosch/den-bosch

有人知道这里使用的技术吗?也许有人可以举一个简单的例子来说明如何实现它。

【问题讨论】:

  • 您是否尝试过查看页面源代码或使用谷歌搜索?无论如何,不​​要这样做,太可怕了。
  • @Marcin 解决方案使用纯粹的replaceState 一点也不可怕:github.com/blog/760-the-tree-slider - 片段确实很糟糕!
  • @greut:是的,问题是使用这些片段 URL 来制作您的整个网站。
  • marcin,我一直在检查源代码并设置断点 3 个小时。然后我用谷歌搜索了它,但没有找到任何相关的文章。所以,这就是我在这里尝试的原因。

标签: ajax url uri


【解决方案1】:

我也在关注这个问题:Apache 重写指令呢?一个快速而肮脏的方法是:

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} -f
RewriteCond %{SCRIPT_FILENAME} -d
RewriteRule ^(.*)$ index.php/#/$1

然后index.php 读取路径做一些工作并简单地向客户端发送一个标头

header('Location: http://www.example.com/#/bla/bla')

这背后的整个想法当然是 AJAX 和前端控制器模式。

PS:我刚刚重写了 Quentin Zervaas 的“Practical Web 2.0 Applications with PHP”一书中的 Zend_Controller 类相关的第 2 章“将所有请求定向到 index.php”中的一些 Apache 指令......

【讨论】:

    【解决方案2】:

    在不刷新页面的情况下更改 URL 使用非常新的历史 API,主要是 history.replaceState

    Benjamin Balupton 写得非常好history.js

    我也邀请您检查整个规格:http://dev.w3.org/html5/spec/history.html

    只更改location.hash 是这里最简单的部分。

    【讨论】:

    • greut,我想这与新的历史 API 没有任何关系,因为上述示例也适用于 IE7、8 和 9。我不知道他们是如何实现的
    • afaik,IE7 无法在不重新加载页面的情况下更改 URL,因此它的工作方式不同。
    猜你喜欢
    • 2017-05-11
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多