Php 重定向所有http请求

Php 重定向所有http请求,php,redirect,Php,Redirect,我的公司使用施乐Docushare进行文档管理。我们正在将2台docushare服务器整合为一台。假设用户的浏览器中有很多docushare页面被标记为书签,那么是否可以在根文件夹中放置一个php文件,该文件夹将接收所有这些请求并执行重定向 比如说 http://old-server/docushare/dsweb/View/Collection-xxxx 将被重定向到 http://new-server/docushare/dsweb/View/Collection-yyyy 集合xxxx到集

我的公司使用施乐Docushare进行文档管理。我们正在将2台docushare服务器整合为一台。假设用户的浏览器中有很多docushare页面被标记为书签,那么是否可以在根文件夹中放置一个php文件,该文件夹将接收所有这些请求并执行重定向

比如说

http://old-server/docushare/dsweb/View/Collection-xxxx

将被重定向到

http://new-server/docushare/dsweb/View/Collection-yyyy

集合xxxx到集合yyyy可能来自我们打算在转换过程中生成的文件

我确实看了一眼 但这是在url级别,而我希望转换旧路径上的所有请求


谢谢。

依我看,最简单的方法就是把.htaccess文件放进去。在文档根目录的根目录中

RewriteEngine on
Options +FollowSymLinks 
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} ^old-server
RewriteRule http://old-server/docushare/dsweb/View/(.*)$ http://new-server/docushare/dsweb/View/$1 [R=301,L]
欲了解更多灵感,请查看


PHP方式

在前面的控制器中,或者web服务器首先命中的任何东西,都将是条件,使用变量,类似于此

if($_SERVER['SERVER_NAME'] == 'old-server')
{
  $redirectionPath = str_replace('http://old-server/docushare/dsweb/View/', 'http://new-server/docushare/dsweb/View/', $_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
  header(sprintf('Location: %s', $redirectionPath), 301);
}
这是一种丑陋的方式,除非你别无选择,否则你不应该使用它。更不用说我的盲写代码了;)


我不知道您的具体情况,但我认为.htaccess文件解决方案解决了您遇到的问题

URL级别和您尝试执行的操作之间有什么区别?@deceze我的意思是,如果我在根级别docushare上有index.php,它将只在“//server/docushare”上接收请求而不是在“//server/docushare/dsweb”下。您要研究的是URL重写和/或mod_重写。我们无法使用.htaccess文件的原因是,大约有15000个“Collection xxx”URL被重命名为“Collection yyyy”。在mergre过程中,新名称被吐出。例如:旧系统中的Collection-0001现在在新系统中重命名为Collection-1001。我们之所以要放置一些脚本,是因为我们希望显示一个中间页面,通知用户他的旧书签应该重命名等。根据我的经验,用户不会更改书签。如果您想让他们更改书签,请向他们显示404页;如果您想让新文档继续工作,请将其重定向到新文档的url。如果“文件名”将被更改,我认为您需要一点更为抽象的映射逻辑,而不是重写或index.php中的一个条件