Sitewide 301 Redirect с подмножеством различных перенаправлений - PullRequest
0 голосов
/ 13 марта 2010

Я пытаюсь сделать переадресацию 301 по всему сайту для сайта, содержащего около 400 страниц, но у меня также есть подмножество около 10 отдельных страниц, которые не следуют перенаправлению по всему сайту и должны указывать куда-то еще.

Есть идеи, как отформатировать такие правила перенаправления, чтобы перенаправление по всему миру не конфликтовало с перенаправлением страниц подмножества?

Я начинаю с правила перенаправления по всему миру как:

Опции + FollowSymLinks ПереписатьEngine на RewriteRule (. *) http://www.name.com/$1 [R = 301, L]

1 Ответ

1 голос
/ 04 августа 2010

Правила перезаписи анализируются в порядке их написания, поэтому порядок их перечисления также определяет приоритет. Учитывая это, вы должны сначала сопоставить URI запроса с 10 отдельными страницами и соответственно вернуть перенаправление, а затем определить перенаправление по всему сайту.

Если 10 отдельных страниц имеют один целевой URL-адрес, правило соответствия может быть одним, в противном случае вы должны выполнять одно перенаправление для каждого URI запроса.

Старайтесь использовать флаг [L] для первых перенаправлений, чтобы сервер вышел из подпрограммы, если правило соответствует, и я бы также предложил добавить строку

RewriteBase /

, что является ключевым для некоторых версий Apache, в которых пропуск этой строки может вызвать ошибку http bad conf.

Options +FollowSymLinks

#switch on the rewrite engine:
RewriteEngine On
RewriteBase /

#rules for the individual redirections:
RewriteRule http://example.com/myUrl-1 http://www.example.org/new-1 [R=301,L]
RewriteRule http://example.com/myUrl-4 http://www.example.org/new-2 [R=301,L]
RewriteRule http://example.com/myUrl-3 http://www.example.org/new-3 [R=301,L]
#...and so on

#sitewide redirection rule:
RewriteRule (.*) http://www.example.org/$1 [R=301]
...