我有一个网站,我们将其称为 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 文件要好,因为在部署之前似乎无法测试这些文件……