bigdogsru
@bigdogsru

Как прописать много редиректов конкретных страниц?

Есть сайт, состоящий из отдельных html-страниц, с ничего не значащими какими попало названиями вроде index1.htm, index10.htm, index130.htm, Page1.html, page20.htm и т.п. Домен старше пяти лет, уникальный контент, очень хорошие позиции в поисковиках.

И есть новая версия сайта — на CMS с ЧПУ, примерно половину страниц новой версии можно конкретно сопоставить со старой, для чего заказчиком составлена аккуратная табличка
index117.htm — /news/
index5.htm — /news/novost-pro-chto-to-konkretnoye/
... и так далее. Никаких совпадений в адресах старого и нового сайта нет — просто потому, что это маразм, сохранять все эти нумерованные индексы и пэйджи на CMS с ЧПУ.
Новая версия пока на субдомене, на сервере апач и nginx как прокси на фронтэнде.
Старый сайт на этот сервер переноситься не будет — просто будет переключен домен на новый IP.

Все соответствия страниц надо прописать в виде 301-х редиректов.

Думаю, лучше сделать это в nginx? Как это правильно сделать? Все примеры для nginx, которые удалось нагуглить — почему-то содержат в адресе, на который надо перенаправить, и протокол и домен (http://site.ru/new-page/). А можно прописывать без протокола и домена?
А если все-таки это надо делать в апаче — то почему?
  • Вопрос задан
  • 4515 просмотров
Решения вопроса 1
Я делал это на уровне PHP. Собрал массив ассоциативный, где ключ - старый адрес, а значение - новый. И далее в обработчике 404 ошибки в начало помещал условие, что если элемент с ключом, соответствующим текущему запросу, найден в том массиве, то делается редирект.
Пример кода:
foreach ($links as $old_link => $new_link) {
    if ($old_link == $_SERVER['REQUEST_URI']) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: $new_link");
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы