перенаправить сайт, исключая wp-admin, при перенаправлении каждой страницы с отдельными 301-ми

Я использую htaccess для перенаправления трафика с одного сайта на другой, используя несколько перенаправлений, как показано ниже. Я сопоставляю каждую страницу, поэтому контент по-прежнему актуален для целей SEO.

redirect 301 /page https://newsite.co.uk/page

У меня есть 407 редиректов, отображаемых таким образом.

Мне также нужно перенаправить домашнюю страницу WordPress, но если я использую redirect 301 / https://newsite.co.uk, он, очевидно, перенаправляет весь трафик. Может ли кто-нибудь указать мне правильное направление, как перенаправить домашнюю страницу WordPress, но оставить папку wp-admin и все мои пользовательские перенаправления?

Это текущая структура .htaccess:

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# START MJB REDIRECTS
redirect 301 /resetpass/ https://www.newsite.co.uk/newpage
redirect 301 /login/ https://www.newsite.co.uk/anothernewpage
407 more redirects...

person Matthew Barraud    schedule 04.03.2021    source источник


Ответы (1)


Первым делом это правило:

redirect 301 / https://newsite.co.uk

Должно быть размещено внизу, чтобы это правило выполнялось последним, иначе оно переопределит все остальные правила и будет выполняться всегда.

Следует вообще избегать использования redirect, поскольку в вашем .htaccess уже есть правила mod_rewrite. Таким образом, приведенное выше правило можно переписать как:

RewriteRule ^/?$ https://newsite.co.uk [L,R=302]

Наконец, если у вас есть доступ к конфигурации сервера, я настоятельно рекомендую использовать RewriteMap, поскольку у вас есть большое количество URI для перенаправления.

PS: Только после того, как вы убедитесь, что перенаправление работает нормально, замените R=302 на R=301. Избегайте использования R=301 (постоянной переадресации) при тестировании правил mod_rewrite.

person anubhava    schedule 04.03.2021
comment
Прав ли я, думая, что RewriteRule, как уже упоминалось, сохранит существующую структуру ссылок? Мы объединяем два сайта, и новый сайт имеет другую структуру. - person Matthew Barraud; 04.03.2021
comment
Никакой RewriteRule ^/?$ https://newsite.co.uk [L,R=302] не будет перенаправлять домашнюю страницу только на домашнюю страницу нового сайта. Точно так же вы можете использовать: RewriteRule ^resetpass/?$ https://newsite.co.uk/newpage [NC,L,R=302] - person anubhava; 04.03.2021