Php 如何将一个web服务重定向到另一个域上的另一个web服务?
我在VPS a上有一个web服务,它的硬盘今天用完了,出于无法增加硬盘的原因,我将web服务移动到了VPS B,现在的问题是web服务URL在应用程序中是静态的,应用程序主机说我们现在无法更新您的应用程序,您必须等待2天!我有大约10万用户,2天的宕机意味着我所有的辛勤工作都将付诸东流 我唯一想到的是以某种方式重定向URL,我采用了我知道唯一可行的方法,因此我尝试了以下两套重写规则:Php 如何将一个web服务重定向到另一个域上的另一个web服务?,php,.htaccess,web-services,url-redirection,http-redirect,Php,.htaccess,Web Services,Url Redirection,Http Redirect,我在VPS a上有一个web服务,它的硬盘今天用完了,出于无法增加硬盘的原因,我将web服务移动到了VPS B,现在的问题是web服务URL在应用程序中是静态的,应用程序主机说我们现在无法更新您的应用程序,您必须等待2天!我有大约10万用户,2天的宕机意味着我所有的辛勤工作都将付诸东流 我唯一想到的是以某种方式重定向URL,我采用了我知道唯一可行的方法,因此我尝试了以下两套重写规则: RewriteCond %{HTTP_HOST} ^11\.11\.11\.11\$ RewriteRule (
RewriteCond %{HTTP_HOST} ^11\.11\.11\.11\$
RewriteRule (.*) mynewdomain.com/v1/$1 [R=301,L]
及
我尝试了在Chrome上发生的事情,但Chrome和防火墙一直给我安全错误,但在应用程序或REST测试应用程序(如postman)上,它不起作用
因此,似乎访问权限对此不起作用
更新:我使用PHPSlim作为服务器代码(Apache,PHP7)
更新2:
我将HTaccess设置为将所有请求重定向到index.php
还有我的index.php
$uri=str_replace('/' . '/', '/', $_SERVER['REQUEST_URI']);
$url="http://www.mynewdomain.com/v1".$uri;
curl_setopt($ch, CURLOPT_URL, $url);
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
curl_setopt($ch, CURLOPT_POST, 1);
$con = file_get_contents("php://input");
curl_setopt($ch, CURLOPT_POSTFIELDS,$con);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close($ch);
echo $server_output;
我还没有完全测试它,您对这种方法有什么看法?它会工作吗(只需要最多工作1或2天)你可以从一个代理到另一个,搜索它?我相信你可以通过htaccess来完成它。@halfer-ty为了回答这个问题,我找到了这个页面——但它对我来说很复杂,我没有完全理解我需要做的事情,我主要专注于PHP代码和数据库,而不是这类东西:(好吧,你只需要尝试一下——你有一个非活动环境来进行实验吗?我会选择[P]首先标记-删除
R
并改为放置P
。我猜您需要安装mod_proxy
,但如果没有,请先试用,或者查看文档是否提到这一点。啊,是的,从手册中可以看到:使用[P]标志导致请求由mod_proxy处理,并通过代理请求处理。因此,在测试环境中,添加mod_proxy
,然后尝试P
标志。
$uri=str_replace('/' . '/', '/', $_SERVER['REQUEST_URI']);
$url="http://www.mynewdomain.com/v1".$uri;
curl_setopt($ch, CURLOPT_URL, $url);
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
curl_setopt($ch, CURLOPT_POST, 1);
$con = file_get_contents("php://input");
curl_setopt($ch, CURLOPT_POSTFIELDS,$con);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close($ch);
echo $server_output;