Мы перенесем всю интрасеть с одной CMS на другую. Все URL-адреса изменятся непредсказуемым образом, но я могу записать файл с оригинальными новыми URL-адресами, которые я могу передать во что угодно. У меня сотни тысяч URL, а не несколько сотен.
Что я хотел бы сделать: каждый URL-адрес, который не найден (404), должен быть проверен по базе данных, и если новый URL-адрес обнаружен, вместо него выдается 301/308. Некоторый обман, предлагающий похожие страницы в сообщении 404, если поиск был неудачным, был бы дополнительным бонусом.
Это правильный подход, или я должен сначала все время проверять перенаправление?
Как мне это сделать в Apache2? Это специальный модуль 404?
Отчасти я разобрался. Хотя 404 все еще ускользает от меня, я могу использовать mod_rewrite и директиву RewriteMap для упреждающей перезаписи URL-адресов вместо того, чтобы сначала полагаться на статус 404. Это могло сработать:
RewriteEngine on
RewriteMap lowercase int:tolower
RewriteMap blog-map dbm:/home/stw/www/blogmap.map
RewriteRule ^/blog/d6plinks/(.*) /blog/${blog-map:${lowercase:$1}} [NC,R=301,L]
Подробное описание здесь. теперь с помощью оператора ErrorDocument исходная цель может быть достижима.