У меня есть веб-сайт, который мы назовем 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, которые, кажется, невозможно протестировать перед развертыванием ...