Ajax 如何使显示动态跨域api驱动内容的搜索引擎友好页面?

Ajax 如何使显示动态跨域api驱动内容的搜索引擎友好页面?,ajax,seo,Ajax,Seo,作为我们正在部署的产品的一部分,客户端需要访问服务器上的远程API以访问内容和数据。尽管如此,出于某些原因和一些客户,我们不需要一个将整个页面放在服务器上的解决方案(原因包括:对设计的控制,但主要是SEO,他们希望这些内容在“他们的域”下可用)。。。由于其他问题,不需要访问API服务器端的脚本 我的想法如下(我将指出它的缺陷,以便其他人可以提出替代方案): 1) 制作一个简单的脚本托管在客户机服务器上,它将从某个URI路径获取所有流量(catch all script,类似于任何框架路由器)。s

作为我们正在部署的产品的一部分,客户端需要访问服务器上的远程API以访问内容和数据。尽管如此,出于某些原因和一些客户,我们不需要一个将整个页面放在服务器上的解决方案(原因包括:对设计的控制,但主要是SEO,他们希望这些内容在“他们的域”下可用)。。。由于其他问题,不需要访问API服务器端的脚本

我的想法如下(我将指出它的缺陷,以便其他人可以提出替代方案):

1) 制作一个简单的脚本托管在客户机服务器上,它将从某个URI路径获取所有流量(catch all script,类似于任何框架路由器)。so/MyApp/*。这个脚本总是返回一个代码,一个“加载javascript和样式”

2) 通过从上面的脚本返回的javascript,提取URL,并在所需路径/MyApp/[*]后处理URI,并使用JSONP或CORS常规ajax将其发送到外部调用,然后对返回进行适当的样式设置并显示

这样,像/MyApp/abc和/MyApp/def这样的url在浏览器源代码中具有相同的html/js,但是js将从ajax调用加载不同的数据,因此显示不同的内容

这似乎是一个很好的解决方案,唯一的缺点是,据我所知,谷歌和其他搜索引擎永远无法访问abc和def的内容,他们只能访问“加载程序javascript和样式”(很明显,他们不会运行JS)

所以这比#好!因为它不会与URL发生冲突,但仍然依赖于JS,所以对搜索引擎不友好

由于服务器的限制,我更希望有一个简单的“catchall”页面,并从客户端调用API,而不是强加最低要求,如curl等。。。另外,通过这种方式,我可以更轻松地访问最终用户的ip地址(尽管我可以制作一个更复杂的代理,这将使在客户端服务器上安装它变得更加困难)


有没有一种方法可以在不从服务器端连接api的情况下实现这一点?

最简单的方法是使用AJAX控制器(假设采用MVC设计)来处理所有远程请求。让控制器中的每个操作返回JSON,然后通过服务器端调用轻松访问数据


否则,您将使用#!解决方案(您不喜欢,这是正确的…),或者使用JSONP(也是一个麻烦)。

Thks对于“Ajax控制器”Zachary的评论,您基本上是指服务器端代理吗?这会有点问题,因为它需要支持一大堆不同的服务器设置,而我们的客户希望在他们的服务器上安装最少的服务器。。。理想情况下,如果我能找到一种方法来做到这一点有点优雅地使用HTML/JS只它将是一个梦想成真,但我想这是不可能的。。。您建议如何使用JSONP实现这一点?(别忘了,我需要从JSONP获取的内容由搜索引擎提供)?谢谢你的帮助!MVC中的控制器只是应用程序中处理逻辑的一部分。如果您的应用程序中没有使用MVC,那么它将只是一个单独的文件,用于发出AJAX请求并返回您需要的任何标记。然后,在页面中可以包含新的文件服务器端。否则,对于JSONP,最好的选择是使用像jQuery这样的库,这样可以简化流程。问题是,我目前没有一个“应用程序”在客户端的服务器上运行,它们只是当前链接到我的服务器。。所以MVC并不是真正的问题。我希望有一些尽可能小的东西,用几种不同的语言(能够支持dif服务器,但这是一个头痛的问题),它将获取内容。。。我想它永远不会以我想要的方式工作,除非我从这个特定的脚本(即通过客户端服务器的代理)发出请求,即使我使用jsonp,谷歌也不会索引jsonp获取的内容。。。哦,好吧,谢谢你帮我验证我的想法,当然MVC不是问题。。这只是一种组织代码的方法:)。如果使用RESTAPI服务器端,客户端仍然可以嵌入返回的数据。如果您打算坚持使用返回JSON的API,那么由他们来正确地为SEO包含数据。(有一个文件来回显内容,然后将该文件包含在目标页面中)