.htaccess Redirect 301 - Отдельные страницы работают нормально, домашняя страница - нет

Я пытаюсь перенаправить некоторые определенные страницы на новые на моем новом сайте (эти перенаправления работают нормально) и, наконец, мою домашнюю страницу ИЛИ (что еще лучше) мою домашнюю страницу и все страницы, которые я не перенаправлял отдельно на мой новый сайт. Вот как выглядит мой .htaccess :

# BEGIN WordPress
<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

Redirect 301 /url1 https://newurl1
Redirect 301 /url2 https://newurl2
Redirect 301 /url3 https://newurl3

A попытался добавить одну строку вроде Redirect 301 / https://newsite.com , но это не сработало. Я предполагаю, что это связано с тем RewriteRule , которое я нашел раньше?

Спасибо за вашу помощь

1
задан 4 March 2021 в 17:38
1 ответ

Если вы перенесли весь свой сайт на новый сервер / домен, то вам, вероятно, не нужен существующий блок # BEGIN / END WordPress , поэтому его следует удалить.

Затем вы можете использовать серию директив mod_alias Redirect (как вы это делали) и директиву RedirectMatch для перенаправления всего остального на домашнюю страницу нового сайта. Хотя, вероятно, это всего лишь пример, но ваши существующие директивы Redirect строго недействительны. Директива Redirect соответствует префиксу, и все, что находится после совпадения, копируется в конец целевого URL, поэтому ее нельзя использовать для перенаправления многих адресов в один. Вот почему нам нужно использовать директиву RedirectMatch для последней части, которая вместо этого сопоставляется с регулярным выражением.

Например:

# Specific redirects
Redirect 301 /url1 https://new.example/newurl1
Redirect 301 /url2 https://new.example/newurl2
Redirect 301 /url3 https://new.example/newurl3

# Redirect everything else to the homepage
RedirectMatch 301 ^/ https://new.example/

Обратите внимание, что, как упоминалось выше, директива Redirect соответствует префиксу, поэтому приведенное выше фактически перенаправляет / url1 / something на https: //new.example/newurl1/something . Если это вызывает беспокойство, вам нужно будет использовать RedirectMatch повсюду. Или используйте mod_rewrite.

Из-за того, что директива Redirect совпадает с префиксом, если вы опустите завершающую косую черту в исходном URL-адресе, вам следует опустить завершающую косую черту в целевом URL. Точно так же, если вы включите завершающую косую черту в источнике, затем добавьте завершающую косую черту в цель. В противном случае вы получите неправильное перенаправление при перенаправлении нескольких URL-адресов.

Не рекомендуется смешивать директивы как из mod_rewrite, так и из mod_alias, поскольку вы можете получить неожиданные конфликты (поскольку они не обязательно обрабатываются в том порядке, в котором директивы появляются в файле конфигурации).

Ссылка:


В сторону: Необязательно проводить массовое перенаправление на домашнюю страницу (многие к одному). Поисковые системы (например, Google) скорее всего будут рассматривать это как soft-404 (и предупреждать об этом в GSC). Это сбивает с толку пользователей, которые не видят ожидаемую страницу. Как правило, предпочтительнее перенаправить на тот же URL-адрес на новом сайте и предоставить настраиваемый 404 (если контент был удален) с информацией о старом / отсутствующем контенте с соответствующими ссылками на домашнюю страницу и другие страницы вашего сайта. Это дает лучший сигнал поисковым системам и более значимый ответ для пользователей.

0
ответ дан 24 April 2021 в 01:03

Теги

Похожие вопросы