【问题标题】:How to make search-engine friendly pages which display dynamic cross-domain api driven content?如何制作显示动态跨域 api 驱动内容的搜索引擎友好页面?
【发布时间】:2026-01-13 10:05:02
【问题描述】:

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

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

1) 制作一个简单的脚本,托管在客户端服务器上,该脚本将从某个 URI 路径获取所有流量(catch-all 脚本,类似于任何框架路由器)。所以 /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 seo


    【解决方案1】:

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

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

    【讨论】:

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