将整个网站重定向到另一个域

将整个网站重定向到另一个域

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

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

我想要做的是将旧的 PHP 网站移至 old.domain.com,并将新的测试版网站移至 domain.com。我希望毫不拖延地完成此操作。我希望所有旧链接都重定向到新的子域。这也包括链接图像(以 .php 结尾)。

答案1

  • 如果你的旧域名写得很好(没有使用绝对的、硬编码的 URI 等等),那么你的工作就非常轻松了,只需交换 VHosts 的 DocumentRoot

  • 如果没有,那么你可以重新使用 mod_rewrite。这个问题在 SF 上有详尽的说明(#66285可以作为起点)

答案2

如果您希望将整个 old.domain.com 网站重定向到 domain.com(新网站),则在 old.domain.com 上使用 .htaccess:

Redirect / http://domain.com

这会将所有请求从 old.domain.com/anything 重定向到新的请求(主页)。

如果您正在寻找 1 对 1 重定向,例如 old.domain.com/directory/file.php -> domain.com/directory/file,那么您需要为此创建 mod_rewrite 规则,假设您使用的是 Apache。

答案3

我刚刚想出了一个非常简单的解决方案。我的解决方案实际上只适用于 Django,但我认为这个概念可以应用于其他 Web 框架。

首先,将所有域指向 django 应用。在 urls.py 的底部添加以下内容:

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

然后创建一个名为“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 文件要好,因为在部署之前似乎无法测试这些文件……

相关内容