Перенос контента в больших масштабах

Если изменения приводят к переносу большого количества контента, то сделать редирект 301 становится непросто. Например, если вы меняете имя домена, то каждый элемент контента вашего сайта переносится на новый URL, даже если архитектура сайта не меняется (http://www.olddomain.com/… переносится наhttp://www.newdomain.com/…).

Вам придется делать редирект 301 для каждой отдельной страницы вашего сайта, как в этом примере:

http://www.olddomain.com/page1.html 301 redirect to http://www.newdomain.com/page1.html

http://www.olddomain.com/page2.html 301 redirect to http://www.newdomain.com/page2.html

http://www.olddomain.com/page3.html 301 redirect to http://www.newdomain.com/page3.html

http://www.olddomain.com/page1000.html 301 redirect to http://www.newdomain.com/

page1000.html

И таким образом пришлось бы для всей тысячи страниц создавать редиректы со старого домена на новый. А представьте себе сайт с миллионом страниц!

Однако те издатели, которые используют web-сервер Apache (http://www.apache.org/) (для операционных систем UNIX и Linux) могут применить модуль mod_rewrite (http://httpd.apache.org/docs/L3/mod/mod_rewrite.html) этого сервера, который всего двумя строчками кода сделает редирект для всех URL старого домена на такой же URL нового домена:

RewriteCond %{HTTP_HOST} ^olddomain.com [NC]

RewriteRule ^/(.*) http://www.newdomain.com/$1 [R=301,L]

Этот код предполагает, что вы предпочитаете в качестве канонического URL иметь версию www. Вы можете также при помощи двух строк аналогичного кода указать в качестве канонического URL и отличную от www версию (примеры без www и другие альтернативные варианты смотрите по адресуhttp://hamletbatista.com/2007/07/19/canonicalization-the-gospel-of-http-301/).

Если вы переносите из одного домена в другой сайт с большим количеством страниц, то это просто замечательный выход из положения. Вы можете использовать этот подход также и для других широкомасштабных переносов контента. Детали зависят от характера выполняемого переноса контента.

Другой очень популярный web-сервер – это IIS (http://www.iis.net/) компании Microsoft. Во многих инсталляциях IIS вам придется делать отдельную команду для каждой страницы (по одной).

Однако и на IIS можно сделать переписывание при помощи дополнительного модуля ISAPI (такого, как iSAPi_Rewrite (http://www.isapirewrite.com/)). Когда этот модуль будет инсталлирован, вы сможете выполнять масштабные переписывания на языке, который похож на используемый в модуле mod_rewrite сервера Apache.

Вы можете еще раз прочитать про modrewrite, ISAPIRewrite и регулярные выражения в разд. "Редиректы " главы 6.