1

背景

我有一个在我自己的服务器上托管的 Web 应用程序。我有客户按原样使用该应用程序,但有些人询问他们是否可以在自己的服务器上“托管”该应用程序。这使他们能够拥有自己的 URL,而不是我的。该应用程序仅构成其网站的一部分,因此我假设我的服务器无法响应对其域的直接调用等

举一些例子,我目前有一些网址,比如www.mydomain.com/profilewww.mydomain.com/index.php?option=someoption&view=someview&id=1我的客户想要什么www.theirdomian.com/profilewww.theirdomian.com/index.php?option=someoption&view=someview&id=1等等

问题

我的问题是,让他们在我的应用程序中使用他们自己的 URL,而不给他们所有的后端源代码和数据库以安装在他们的服务器上的最佳方式是什么?

我真的不想让他们“托管”我的应用程序。但确实希望他们能够使用自己的 URL,而无需修改我服务器上的任何内容。

我认为的一种方法是在他们的服务器上创建一个 router.php 文件。当在客户端站点上单击链接时,路由器接收请求并修改 url 以从我的服务器等获取数据。路由它们通过调用 URL 将 html 源输出回客户端站点。

这是实现我想要的有效方法,还是偏离目标。

4

3 回答 3

1

这可能对您的需求来说太先进了,但是......

你能不能创建一些他们可以利用的基本 API,这将使他们可以自由地以自己的方式使用,同时你可以控制它的行为。

API 只需要 cURL 和一些简单的 XML

有很多方法可以完成你想要的,包括 mod_rewrite 规则。

于 2012-12-12T15:14:53.907 回答
0

首先,您网站中的链接不应该是硬编码的。如果您www.mydomain.com/...到处都进行了硬编码……祝您好运。您应该使用相对于服务器根目录的 URL,例如:

<a href="/profile">

为了获得更大的灵活性,请使用创建相对于应用程序运行位置的 URL 的帮助程序,而不是硬编码任何 URL。如果这样做了,使用不同域名访问同一站点所需要做的就是配置 Web 服务器,使其接受域名请求并设置 DNS 条目theirdomain.com以指向您的服务器。

如果这不是一个选项,那么运行的人theirdomain.com应该运行一个反向代理,在他们的域下为您的域提供服务。

于 2012-12-12T15:15:01.630 回答
0

好的!

假设您在http://www.mydomain.com/listener.php上托管了一个 PHP 文件

接收帖子数据

$Data = file_get_contents("php://input");

此示例中发布的数据是 XML

<Myapp>
 <method="InitFunction"/>
 <User id="1234"/>
</Myapp>

此处发布的数据是从一个 PHP 文件(即您的 API)传递的,该文件只是从客户端输入中读取数据(因为 API 在客户端服务器上)

API 使用 cURL 发布到您的文件,即http://www.mydomain.com/listener.php

然后根据发生的情况,您可以响应,即打印或 ECHO 将响应返回给 API。

检查 php.net 站点在 cURL 上的使用情况 - 使用起来非常简单

于 2012-12-12T15:39:26.650 回答