Я пытаюсь перенаправить некоторые определенные страницы на новые на моем новом сайте (эти перенаправления работают нормально) и, наконец, мою домашнюю страницу ИЛИ (что еще лучше) мою домашнюю страницу и все страницы, которые я не перенаправлял отдельно на мой новый сайт. Вот как выглядит мой .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
, которое я нашел раньше?
Спасибо за вашу помощь
Если вы перенесли весь свой сайт на новый сервер / домен, то вам, вероятно, не нужен существующий блок # 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 (если контент был удален) с информацией о старом / отсутствующем контенте с соответствующими ссылками на домашнюю страницу и другие страницы вашего сайта. Это дает лучший сигнал поисковым системам и более значимый ответ для пользователей.