Назад | Перейти на главную страницу

Перенаправление всего сайта на другой домен

У меня есть веб-сайт, который мы назовем domain.com, который изначально был написан на PHP. Каждый действительный URL-адрес содержит буквы «php» где-то после части «domain.com/».

Недавно я закончил полное переписывание сайта с помощью Django, который сейчас находится по адресу beta.domain.com.

Я хочу переместить старый сайт PHP на old.domain.com, а новый бета-сайт - на domain.com. Я хочу сделать это, не пропуская ни секунды. Я хочу, чтобы все старые ссылки перенаправлялись на новый поддомен. Сюда также входят связанные изображения (заканчивающиеся на .php).

  • Если ваш старый домен был хорошо написан (не используйте абсолютные, жестко закодированные URI и т. Д.), Вы можете выполнить эту работу очень легко, просто заменив DocumentRoot VHosts

  • в противном случае вы можете вернуться к mod_rewrite. Этот вопрос подробно освещен на SF (# 66285 может быть отправной точкой)

Если вы хотите перенаправить весь сайт old.domain.com на domain.com (новый сайт), тогда .htaccess на old.domain.com с:

Redirect / http://domain.com

Это перенаправит все запросы с old.domain.com/anything на новый (главную домашнюю страницу).

Если вы ищете перенаправления 1-к-1, например old.domain.com/directory/file.php -> domain.com/directory/file, вам нужно будет создать для этого правила mod_rewrite, если вы используете Apache. .

Я просто придумал очень простое решение этой проблемы. Мое решение действительно работает только с Django, но я думаю, что концепция может быть применена к другим веб-фреймворкам.

Сначала направьте все домены в приложение django. Внизу urls.py добавьте следующее:

(r'\.php', "redirect.views.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, которые, кажется, невозможно протестировать перед развертыванием ...