Есть ли у кого-нибудь статистика о влиянии большого количества (более 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 перенаправлений окажет какое-либо заметное влияние на ваш сервер.

Другие вопросы по тегам