Есть ли у кого-нибудь статистика о влиянии большого количества (более 100) перенаправлений в apache conf?
Недавно мы перенесли блог на новый сайт, и нам пришлось настроить несколько переадресаций со старых статей на новое место.
Теперь проблема в том, что мы обнаружили, что на его старом сайте у него были всевозможные комбинации URL-адресов, поскольку он тестировал с ними различные SEO-методы.
Мой вопрос заключается в том, что я уже сгруппировал многие из них вместе и получил хороший кусок сайта, но существует так много однотипных URL-адресов, что это безумие. Я не могу использовать шаблоны и регулярные выражения для всех из них.
Я не против разместить их как отдельные перенаправления в моем apache conf, но я обеспокоен тем, что с более чем 100 из них это может затормозить сервер - кто-нибудь имеет доказательства этого или сталкивался с этой проблемой раньше?
1 ответ
Это может или не может помочь вам. Там, где я работаю, у нас есть тонна доменов, зарегистрированных во вторичных TLD (например, net, org, различные ccTLD), которые обычно перенаправляют на основной TLD (в большинстве случаев com). В результате получается около 1000 URL-адресов, которые необходимо перенаправить в другое место.
Подход, который мы использовали, заключался в том, чтобы использовать Apache mod_rewrite для генерации перенаправлений, а конфигурация сохранялась в таблице ключ: значение (которую может прочитать mod_rewrite). Базовая конфигурация будет выглядеть примерно так:
RewriteEngine on
RewriteMap redir dbm=db:/path/to/redir-map.db
# store redir url in a var, or "XX" if not found
RewriteRule ^ - [E=url:${redir:%{REQUEST_URI}|XX}]
# if the redir url is found, do the redirect
RewriteCond %{ENV:url} !^XX$
RewriteRule ^.*$ %{ENV:url}? [R=permanent,L]
Ваша карта перенаправления будет представлять собой простой текстовый файл с такими строками:
# old uri new url
/some/path/funny-story http://newsite.blogtastic.com/funny-story
/some/path/my-birthday http://newsite.blogtastic.com/birthday-2009
Файл БД создается с помощью следующей программы (входит в состав Apache):
httxt2dbm -v -f DB -i redir-map.txt -o redir-map-db
Мне нравится такой подход, потому что он сводит нашу конфигурацию Apache к минимуму и не требует от нас перезагрузки конфигурации, когда нам нужно добавить / изменить / удалить перенаправление (мы просто перестраиваем файл БД).
В нашем случае мы получаем около 35 000 обращений в день, которые должны быть перенаправлены. Сервер - это виртуальная машина CentOS 5.2, работающая под управлением ESX, на которой установлен один процессор 3 ГГц Xeon. Загрузка системы обычно ниже 0,1, а загрузка процессора почти равна нулю. Мы регистрируем перенаправления с помощью дополнительной директивы CustomLog, которая учитывает основную часть дискового ввода-вывода сервера (которая сама по себе все еще довольно мала). На этом сервере размещаются и другие веб-сайты, поэтому влияние перенаправлений на самом деле несколько ниже, чем указывали бы эти цифры.
Я не могу говорить о том, как этот подход сравнивается с использованием директив Redirect вместо Rewrite, но я не могу представить, что они выполняют все это по-другому. Я не думаю, что добавление более 100 перенаправлений окажет какое-либо заметное влияние на ваш сервер.