RewriteMap - действительно путь, заявленный regilero. Однако я не мог понять, как должен работать его код, и я не мог заставить его работать. Одна проблема заключается в том, что предполагается, что дальнейших переписываний больше нет (отсутствует [L]). Это работает:
В конфиге apache (НЕ работает в .htaccess):
RewriteMap myredirects txt:/var/www/mysite/redirects.txt
В .htaccess (также работает в конфиге apache):
RewriteCond ${myredirects:%{REQUEST_URI}} .+
RewriteRule ^ ${myredirects:%{REQUEST_URI}} [L,R=301]
В файле redirects.txt (Примечание: косые черты НЕ являются обязательными)
/old /new
Я не уверен, что переход на dbm стоит лишних хлопот.
Как указано в http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemap, поиск в любом случае кэшируется в памяти.
Для простых текстовых файлов и файлов формата DBM искомые ключи кэшируются
в ядре, пока mtime файла карты не изменится или сервер не выполнит
перезапускать.