Мультисайтовая редирекция на новые домены

Вопрос или проблема

У меня есть мультисайтовый веб-сайт с 5 доменами на WordPress, который использует плагин WordPress MU Domain Mapping.

Я хочу перенаправить каждую подсистему на новый домен, но мы все равно будем использовать главную страницу, потому что на ней есть некоторые ссылки, поэтому корневая, wp-admin и wp-login должны оставаться доступными и не перенаправляться. Как это настроить в .htaccess, чтобы WordPress продолжал функционировать?

пример домена:

oldone.com/ --> без перенаправления
oldone.com/wp-admin --> без перенаправления
oldone.com/wp-login --> без перенаправления
oldone.com/about --> newone.com/about
oldone1.com/about --> newone1.com/about
... и т.д. ...

.htaccess:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]

# загруженные файлы
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+) wp-includes/ms-files.php?file=$2 [L]

# добавление косой черты к /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(wp-(content|admin|includes).*) $1 [L]
RewriteRule  ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

### перенаправление oldone.com
RewriteCond %{HTTP_HOST} ^oldone.com$ [NC]
# перенаправляет domain.com на www.oldone.com
RewriteRule ^(.*)$ http://oldone.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.oldone.com\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/(wp-login/?|$)
RewriteCond %{REQUEST_URI} !^/(wp-admin/?|$)
RewriteRule ^(.*)$ http://newone.com/$1 [R=301,L]
####

Попробуйте добавить что-то вроде следующего в верхнюю часть вашего .htaccess файла:

RewriteCond %{HTTP_HOST} ^(www\.)?oldone\.com
RewriteCond ${REQUEST_URI} !^/wp-admin
RewriteCond ${REQUEST_URI} !^/wp-login
RewriteRule . http://newone.com%{REQUEST_URI} [R,L]

Убедитесь, что кеш браузера очищен. Меняйте на 301 (если это намерение) только когда будете уверены, что все работает корректно.

Повторите для любых других комбинаций oldoneN.com / newoneN.com, если нет какой-либо закономерности в названиях доменов?

В качестве альтернативы, если вы никогда не хотите перенаправлять /wp-admin или /wp-login и т.д. для любого домена, то вы можете включить исключение для этих URL-путей. Хотя это, вероятно, может повлиять на некоторые другие директивы MU.

Ответ или решение

Ответ на вопрос о мультсайтовом редиректе на новые домены

У вас есть мультсайтовый сайт на WordPress с пятью доменами, для которых используется плагин WordPress MU Domain Mapping. Существует необходимость перенаправить все подстраницы на новые домены, при этом оставив доступными корневую страницу, админку (wp-admin) и страницу входа (wp-login). Давайте разберем, как это можно реализовать в файле .htaccess.

Изменения в файле .htaccess

Для достижения необходимого поведения можно внести следующие изменения в начало вашего файла .htaccess:

RewriteEngine On
RewriteBase /

# Исключаем корневую страницу, wp-admin и wp-login
RewriteCond %{HTTP_HOST} ^(www\.)?oldone\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-login
RewriteRule ^(.*)$ http://newone.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?oldone1\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-login
RewriteRule ^(.*)$ http://newone1.com/$1 [R=301,L]

# другие домены можно добавить аналогичным образом

Объяснение:

  1. RewriteEngine On: Включает механизмы перезаписи URL.

  2. RewriteBase /: Устанавливает базовый путь для правил перезаписи.

  3. RewriteCond:

    • %{HTTP_HOST}: проверяет, является ли текущий запрашиваемый домен oldone.com или другой его вариант (например, www.oldone.com).
    • %{REQUEST_URI}: исключает пути /wp-admin и /wp-login из редиректа.
  4. RewriteRule: Если условия выполнены, выполняется перенаправление на соответствующий новый домен с сохранением структуры URL.

Дополнительные рекомендации:

  1. Очистите кеш браузера: После внесения этих изменений обязательно очистите кеш браузера, чтобы изменения вступили в силу.

  2. Проверка перед установкой 301: Если это тестовый редирект, используйте код 302, что обозначает временное перенаправление. Код 301 (постоянное) можно установить только после полной проверки работоспособности.

  3. Добавление других доменов: Вы можете продолжить по аналогии добавлять правила для других доменов, созданием дополнительных блоков RewriteCond и RewriteRule.

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

Оцените материал
Добавить комментарий

Капча загружается...