2010-06-30 3 views
8

Наша компания меняет веб-платформы, и мы хотели бы сохранить наши результаты Google, поэтому мы планируем перенести 301 переадресацию в наш htaccess-файл.Может быть слишком большой файл .htaccess

Я обеспокоен тем, что если я включу все эти переадресации (возможно, 3000 - 5000 всего), это замедлит работу сервера, поскольку он сделает все эти проверки.

Кто-нибудь знает, имеет ли файл htaccess этот большой причину каких-либо проблем? У меня довольно быстрый сервер для сайта (8 ядер), поэтому у меня есть достаточное количество доступной мощности.

+0

Любые результаты по этому вопросу? – Andor

+4

Я обнаружил, что вы можете сделать TON переадресации 301 строк без заметной разницы в производительности. Однако RedirectMatch может замедлить работу, если у вас есть несколько тысяч из них. В итоге я взял перенаправления и создал подкаталоги и разместил там соответствующие строки Redirect и RedirectMatch. –

ответ

3

Я сомневаюсь, что это заметно замедлит работу сервера. Но сначала проверьте это.

Создайте файл .htaccess 5k в папке www/temp с некоторыми правилами перезаписи, которые вы будете использовать. Посмотрите, сколько времени требуется для доступа к странице с файлом .htaccess и без него.

+0

Я собираюсь попробовать. Я опубликую то, что испытываю, когда у меня есть реальные данные. –

+0

Удалось ли вам провести тестирование? У вас есть реальные данные? – Jon

1

Хм. У меня нет жестких чисел, может ли Apache иметь проблемы с производительностью с таким количеством переадресаций, но я бы чувствовал себя неловко, имея такие огромные файлы htaccess, которые обрабатываются по по каждому запросу, независимо от того, является ли это новым или старым URL.

Если возможно, я бы старался обрабатывать сопоставление «старых» URL-адресов с новыми, используя язык на стороне сервера, и таблицу базы данных для поиска, хотя бы для упрощения обслуживания.

Независимо от того, насколько это возможно, зависит от вашей старой новой структуры URL. Если, например, все старые URL-адреса имеют общую структуру, как

www.domain.com/cms/folder/pagename.htm 

, который может быть отделен от новой структуры, я бы перенаправить весь «старый» трафик в центральный файл сценария (независимо от платформы сервера, ASP, PHP ...) и выполните простой поиск и перенаправление заголовков туда.

0

В соответствии с справочными документами: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html Я предполагаю, что это будет перетаскивание для обработки всех 3k x2 по каждому запросу.

Кроме того, я полагаю, было бы nighmare управлять этими правилами на изменениях - это вручную ...

2

других ответов есть некоторые хорошие предложения, но если вы не заводиться с помощью какой-то альтернативы переписать , я бы настоятельно предложил помещать эти строки в файл конфигурации основного сервера вместо файла .htaccess. Таким образом, Apache будет анализировать их только один раз, когда он запустится, и он может просто ссылаться на внутреннюю структуру данных, а не проверять файл .htaccess по каждому запросу. На самом деле разработчики Apache рекомендуют не использовать файлы .htaccess, если у вас нет доступа к конфигурации основного сервера. Если вы не используете .htaccess файлы, вы можете установить

AllowOverride None 

в основной конфигурации, а затем Apache даже не придется тратить время на поиск файлов на всех. На занятом сервере это может быть полезной оптимизацией.

Еще одна вещь, которую вы могли бы рассмотреть (в сочетании с вышесказанным), - использовать директиву RewriteMap для «перенаправления» перезаписи URL во внешнюю программу. Вы можете написать эту внешнюю программу, например, для хранения старых URL-адресов в хеш-таблице или любой подходящей оптимизации.

Смежные вопросы