Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在web应用程序中使用不同的域和URL 背景_Php_Html_Web Applications_Url Routing - Fatal编程技术网

Php 在web应用程序中使用不同的域和URL 背景

Php 在web应用程序中使用不同的域和URL 背景,php,html,web-applications,url-routing,Php,Html,Web Applications,Url Routing,我有一个在自己的服务器上托管的web应用程序。我有一些客户机按原样使用应用程序,但一些客户机询问他们是否可以在自己的服务器上“托管”应用程序。这使他们能够拥有自己的URL,而不是我的URL。该应用程序只是他们网站的一部分,所以我假设我的服务器不可能响应对他们域的直接调用等 举一些例子,我现在有一些URL,比如www.mydomain.com/profile,www.mydomain.com/index.php?option=someoption&view=someview&id=1我的客户想要的

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

举一些例子,我现在有一些URL,比如
www.mydomain.com/profile
www.mydomain.com/index.php?option=someoption&view=someview&id=1
我的客户想要的是
www.theirdomian.com/profile
www.theirdomian.com/index.php?option=someoption&view=someview&id=1
等等

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

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

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


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

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

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

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


有很多方法可以实现你想要的,包括修改重写规则。

这对于你的需要来说可能太高级了,但是

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

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


有很多方法可以实现你想要的,包括修改重写规则。

首先,网站中的链接不应该硬编码。如果您在任何地方都硬编码了
www.mydomain.com/…
。。。祝你好运把它弄出来。您应该使用相对于服务器根目录的URL,例如:

<a href="/profile">

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


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

首先,您站点中的链接不应该硬编码。如果您在任何地方都硬编码了
www.mydomain.com/…
。。。祝你好运把它弄出来。您应该使用相对于服务器根目录的URL,例如:

<a href="/profile">

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

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

好的

假设您有一个托管在

它接收post数据

$Data = file_get_contents("php://input");
本例中发布的数据是XML

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

这里发布的数据来自一个PHP文件(即您的API) 只需从客户端输入读取数据(因为API位于客户端服务器上)

API使用cURL发布到您的文件,即

根据发生的情况,您可以进行响应,即打印或将响应返回到API

查看php.net网站了解cURL的用法-使用非常简单

ok

假设您有一个托管在

它接收post数据

$Data = file_get_contents("php://input");
本例中发布的数据是XML

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

这里发布的数据来自一个PHP文件(即您的API) 只需从客户端输入读取数据(因为API位于客户端服务器上)

API使用cURL发布到您的文件,即

根据发生的情况,您可以进行响应,即打印或将响应返回到API


查看php.net网站了解cURL的用法-使用起来非常简单

谢谢你的回答。我真的不想走上重写mod_的路线,因为这对我来说是一件额外需要维护的事情。理想情况下,我只想将集成的责任转交给我的客户。api可能是一个很好的方法,但我的方法可能更简单吗?我真的只是想看看我所建议的方法是否是实现我想要的目标的好方法。酷,这就是我想知道的。我的方法是否糟糕。关于API的答案,它相当模糊。例如,我的路由器基本上就像一个api-getHTML(urlOptions);你能详述你的答案吗?谢谢你的回答。我真的不想走上重写mod_的路线,因为这对我来说是一件额外需要维护的事情。理想情况下,我只想将集成的责任转交给我的客户。api可能是一个很好的方法,但我的方法可能更简单吗?我真的只是想看看我所建议的方法是否是实现我想要的目标的好方法。酷,这就是我想知道的。我的方法是否糟糕。雷加