@jorajra

Как правильно прописать 301 редирект под определенное условие?

Нужно правильно прописать 301редирект. Суть задачи: есть более тысячи адресов с товарами в индексе гугла, которые имеют вид site.com/набор_цифер от 0 до 9.html. Поменялся движок сайта, и теперь товары все находятся в разделах. Дабы не было кучи ошибок 404 в серч консоли я хочу все эти страницы средиректить на главную, пока они не выпадут с индекса.
Я нашел и прописал в .htaccess такое условие
RewriteRule ^[0-9] httрs://site.com/ [R=301,L]
Редиректы работают, вроде. По крайне мере httрs://site.com/catalog/1.html не редиректится на главную, что и нужно нам. Но вот вопрос, есть еще строка RewriteCond, которая всегда, или почти всегда, прописывается перед RewriteRule. Подскажите, в этом случае она обязательная? Как мне правильно сделать, чтобы не было никаких негативных последствий ни для гугла, ни для пользователей?
  • Вопрос задан
  • 248 просмотров
Пригласить эксперта
Ответы на вопрос 2
copist
@copist
Empower people to give
Как мне правильно сделать, чтобы не было никаких негативных последствий ни для гугла, ни для пользователей?


Если сделать 301 на главную, пострадает индексация (все страницы выпадут из поиска, появятся дубликаты, предупреждения в Google Webmaster - смотрите proof с статистикой) и пользователи не смогут открыть страницы товаров по старым ссылкам.

Чтобы не было последствий, нужно сделать карту сопоставлений старых URL и новых URL, чтобы поисковые роботы через HTTP 301 поняли, что старые URL можно заменить на новые.

Таких ссылок может быть много. Нужна будет карта переадресаций (redirect map). Можно реализовать на Apache, на Nginx, можно на любимом языке программирования (пример на PHP).
Ответ написан
shambler81
@shambler81 Куратор тега htaccess
Реврайт конд это просто условие "ЕСЛИ" !
например
RewriteCond %{REQUEST_FILENAME} !-f
Если это не файл
RewriteCond %{REQUEST_FILENAME} !-l
Если это не директория
RewriteCond %{REQUEST_FILENAME} !-d
Если это не файл урлреврайт ( защита от цикла)
RewriteCond %{REQUEST_FILENAME} !/bitrix/urlrewrite.php$
ТО  выполнить редирект.
RewriteRule ^(.*)$ /bitrix/urlrewrite.php [L]

Если вам не требуется дополнительных условий то вам не нужен конд.

Кстати ваше правило редиректит только 1 символ от 1 до9
если например будет 32 то этот редирект не сработает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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