Php Ajax页面获取设计需要物理地址

Php Ajax页面获取设计需要物理地址,php,javascript,facebook,Php,Javascript,Facebook,我正在用php创建一个web应用程序。我通过基于ajax的请求加载内容。 当我点击一个超链接时,相应的页面通过ajax获取,内容被获取的页面替换 现在的问题是,我需要一个物理href,这样我就可以实现类似facebook的功能,并维护浏览器历史记录属性。我不能做一个旧的学校回发到php页面,因为我正在做一个转换动画,其中当前页面滑开,新页面滑入 是否有一种方法可以保留动画,并且仍然具有有效的物理href和历史记录 应用程序的设计如下: 该应用程序获取rss提要 它为这些rss提要创建DOM 在点

我正在用php创建一个web应用程序。我通过基于ajax的请求加载内容。 当我点击一个超链接时,相应的页面通过ajax获取,内容被获取的页面替换

现在的问题是,我需要一个物理href,这样我就可以实现类似facebook的功能,并维护浏览器历史记录属性。我不能做一个旧的学校回发到php页面,因为我正在做一个转换动画,其中当前页面滑开,新页面滑入

是否有一种方法可以保留动画,并且仍然具有有效的物理href和历史记录

应用程序的设计如下:

  • 该应用程序获取rss提要
  • 它为这些rss提要创建DOM
  • 在点击任何标题后,页面会显示动画并进入rss提要的完整故事
  • 我需要在整个故事页面上创建“喜欢”按钮。但是我没有一个有效的url

  • 您必须实现哈希导航

    这是一个简短的教程


    更多的是概念性的介绍。

    虽然Alexander的答案在客户端非常有效,但Facebook的linter工具不运行javascript,因此它将获得旧内容。这两个链接都不能解决这个问题


    amit需要实现的是url的服务器端解析。看见片段是服务器认为的哈希标记值。在php代码中,根据片段呈现正确的og:tags。

    如果您使用的是jQuery,我建议您使用BBQ进行哈希导航:


    首先,如果您需要facebook的URL,请想出一个结构,为您提供一个URL,这样您的服务器端代码将在给定该URL时加载正确的页面。这可能类似于
    http://yourdomain.com/page.php?feed=&link=
    ,这将允许您使用PHP
    $\u GET
    数组检查参数。如果没有参数,则加载索引页;如果您这样做,则加载相关文章


    第二,使用类似这样的工具为HTML5
    pushState()
    功能提供跨浏览器支持,以便在执行AJAX调用时可以设置页面URL,而无需浏览器进行完全重新加载。

    这对我来说实际上听起来非常直截了当。 您像往常一样拥有URL,使用散列(#)可以在客户端和服务器端提取信息


    只有一件事是缺少的,在服务器端,在返回内容之前,检查用户代理字符串并将其与facebook bot进行比较(如果我没有弄错的话,它类似于“facebookexternalhit”),如果它是facebook bot,则返回您想要的内容,其中描述了类似/共享的url(开放图形元数据),如果是任何其他用户代理字符串,则按常规返回内容。

    可能重复的内容不会重复。我需要找到一种方法来创建固定的href。而不是临时的。href应该保持不变,以便facebook访问它。如果你想一想你在这里实际需要做什么,它就是重复的-除非我误解了。我解释d这是因为你想用Javascript修改页面内容,但你也想更改地址栏中显示的URL,这样如果你重新加载URL,就会生成相同的内容。所以你真正想做的正是另一个问题所问的。我不是说这是个坏问题——这就是为什么我没有回答的原因nvoted它-但我确实认为这是一个骗局。但是如果我误解了,请准确地扩展您想要的内容…当我将href提供给facebook时,它使用它来刮取页面,并为用户提供一个链接。因此我需要一个永久链接才能正常工作。嘿,阿米特,您是在制作iphone应用程序吗?虽然这在客户端非常有效另一方面,facebook的linter工具不运行javascript,因此它将获得旧的content.Correct。使用jQuery历史插件。我这里的工作代码与您想要的几乎相同。每个页面都是通过jQuery.ajax(post)加载的使用历史插件并有一个类似的按钮。在.htaccess中,你可以这样做
    选项+遵循重写规则上的语法链接重写引擎。*-[E=HTTP_授权:%{HTTP:AUTHORIZATION}]RewriteCond%{REQUEST_URI}!^/site\.htm RewriteCond%{REQUEST_URI}/site/[^.]*.\\.(php | html?| htm | feed{pdf | vcf}$[NC]RewriteCond%{REQUEST文件名}!-f RewriteCond%{REQUEST_FILENAME}!-d RewriteRule.*site.htm[L]