2009-10-29 58 views
2

例如,我想有我报名,约和联系人页面解析为不同的内容,而是通过哈希标签:以混编网址并将其发送到一个新的URL

三通每一个到报名,联系方式和有关页面 -

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

是否有使用Javascript或PHP将这些页面解析为分隔内容的方法?

回答

5

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

检查值location.hash

-2

您可以使用PHP的全局$ _REQUEST变量抢请求的URL,并解析出井号标签...

+2

错了。散列标签通常不会发送到服务器,而是由用户代理处理。你可能会想到cgi参数,而不是散列(或片段标识符)。 – 2009-10-29 14:03:30

+0

将Hashtags发送到请求中的服务器。在公共社区中称错某人之前,请自行检查。 – 2009-11-02 14:57:14

+0

我很抱歉让你失望,但你错了*:http://httpbin.org/get#wat请注意“url”说的是什么。你在考虑GET参数:http://httpbin.org/get?hashtag=i-think-not--你说的是[$ _REQUEST](http://php.net/manual/en /reserved.variables.request.php)(在这种情况下简单地委托给$ _GET)应该是一个明显的线索。 – 2013-05-06 14:24:27

0

我想你可能有一个很好的理由,但我会问,你为什么会这么做?它打破了人们广泛理解的网址哈希应该如何工作的标准,它只是乞求与其他客户端互操作的麻烦。

+2

这通常在Gmail等AJAX-y站点中完成,以允许用户保留浏览器历史记录和书签功能,尽管实际页面URL永远不会改变。 – ceejayoz 2009-10-29 14:09:37

+0

有趣的技术,我以前没有听说过。 – 2009-10-29 14:57:30

+0

对于搜索引擎优化,有时候可以减少某些页面从站点架构角度强加的链接“足迹”。有了这些页面,它们对搜索结果并没有什么帮助 - 它们更像是用户的支持页面,如果整合可以帮助强调其他内容/ URL ...... 有意义吗? – Rninja 2009-10-29 19:50:37

2

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

但它需要一点冗余,因为您需要提供两次相同的内容,一次通过AJAX包含,一次通过适当的布局和一切通过PHP。

如果你只是为了美观的原因想要哈希URL,但不想依赖于JS,那么你的运气不好。 URL的语义反对你:片段ID不应该真正影响URL引用的内容,而仅仅是该内容中的片段。 AJAX网址正在改变这些语义,但如果不必这样做,没有什么好的理由去做。

+0

这看起来不错(也感谢Slaks)。我会给它一个旋转,看看我得到了什么。可能要测试一下 - 在任何javascripting中非常生锈。 – Rninja 2009-10-29 19:52:32

相关问题