У нас есть список из 3000 301 редиректа. Нам нужна помощь по
Спасибо.
Ты можешь использовать Include
директива в httpd.conf
чтобы иметь возможность поддерживать перенаправления в другом файле. Но это было бы не очень эффективно, так как каждый запрос нужно было бы проверять по множеству регулярных выражений. Также перезапуск сервера потребуется после каждого изменения файла.
Лучшим способом для такого количества перенаправлений было бы использовать RewriteMap директива типа dbm
объявить карту от URI к перенаправлениям. Таким образом, это будет эффективно, так как поиск в dbm выполняется очень быстро, и после изменения карты вам не нужно перезапускать сервер, так как httpd
проверяет время модификации файла карты.
Правила перезаписи будут выглядеть так (проверено на моем компьютере с Fedora 16):
RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
И карта dbm будет создана из текстовой карты /etc/httpd/conf/redirects.txt
выглядит так:
/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/
используя команду
httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
Я бы написал сценарий, который генерирует новый VHOST только со ссылками из списка.