重定向所有http请求

时间:2011-10-10 23:03:14

标签: php redirect

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

例如

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

会被重定向到

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

collection-xxxx to collection-yyyy可能来自我们打算在转换过程中生成的文件。

我确实看过了 http://php.net/manual/en/function.header.php 但这是在网址级别,而我希望转换旧路径上的所有请求。

感谢。

1 个答案:

答案 0 :(得分:1)

根据我的观点,最简单的方法是放置 .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]

要获得更多灵感,请检查this page


PHP方式

在前端控制器或Web服务器首先出现的任何内容中,将使用$_SERVER变量进行调整,类似于此

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文件解决方案解决了你遇到的问题