Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/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服务重定向到另一个域上的另一个web服务?_Php_.htaccess_Web Services_Url Redirection_Http Redirect - Fatal编程技术网

Php 如何将一个web服务重定向到另一个域上的另一个web服务?

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 (

我在VPS a上有一个web服务,它的硬盘今天用完了,出于无法增加硬盘的原因,我将web服务移动到了VPS B,现在的问题是web服务URL在应用程序中是静态的,应用程序主机说我们现在无法更新您的应用程序,您必须等待2天!我有大约10万用户,2天的宕机意味着我所有的辛勤工作都将付诸东流

我唯一想到的是以某种方式重定向URL,我采用了我知道唯一可行的方法,因此我尝试了以下两套重写规则:

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;