将整个网站redirect到另一个域

我有一个网站,我们将其称为domain.com,最初是用PHP编写的。 每个有效的URL都包含“domain.com/”部分之后的字母“php”。

我最近使用Django完成了对网站的完整重写,该网站目前位于beta.domain.com

我想要做的是将旧的PHP网站移动到old.domain.com,并将新的testing版网站移动到domain.com。 我想这样做,不要错过一个节拍。 我希望所有旧的链接redirect到新的子域。 这也包括链接的图像(以.php结尾)。

  • 如果你的旧域名写得很好(不是使用绝对的,硬编码的URI等),你可以非常容易的工作, 只需交换VHost的DocumentRoot

  • 如果没有,那么你可以重复mod_rewrite。 这个问题在SF( #66285可以是一个起点)上大量处理,

如果您正在寻找将整个old.domain.com网站redirect到domain.com(新站点),那么在old.domain.com上的.htaccess将与:

Redirect / http://domain.com 

这会将所有来自old.domain.com/anything的请求redirect到新的(主网页)。

如果你正在寻找1对1的redirect,例如old.domain.com/directory/file.php – > domain.com/directory/file,那么你需要为此创buildmod_rewrite规则,假设你在Apache 。

我只是想出了一个非常简单的解决scheme。 我的解决scheme只适用于Django,但是我可以将这个概念应用于其他的web框架。

首先,将所有域指向django应用程序。 在urls.py的底部添加:

 (r'\.php', "redirect.views.redirect", ), 

然后创build一个名为“redirect”的应用程序,并在views.py文件中添加以下内容:

 def redirect(request): """redirect any url with '.php' to the old PHP version""" return HttpResponseRedirect("http://old.domain.com" + request.get_full_path()) 

这可能不是最有效的方式来做到这一点,但呃,它似乎工作。 它确实打败.htaccess文件,这似乎是无法testing之前部署…