Редирект 301 .htaccess
Понадобился редирект 301. Причем, редирект 301 через .htaccess
Предыстория.
После многих экспериментов с разными движками, на разных ресурсах остались ссылки на мой сайт.
Самих ссылок уже нет - то ссылки поменялись, то движков уже нет..
Но так как инфа на других ресурсах сохранилась ( мелочь, но приятно ;) )- негоже иметь неработающие ссылки.
Есть для этих целей такая команда - redirect. С параметром [R=301,L] Точнее, 301-ый редирект.
Это означает постоянный редирект. Что это означает:
301-й редирект (Moved Permanently) — это постоянный редирект. Используется для перемещения страницы на новый URL-адрес насовсем. Когда поисковые системы встречают страницу с редиректом 301, они «понимают», что теперь необходимо индексировать новую страницу, а старую можно полностью исключить из индексации. Если настроить переадресацию 301 некорректно, на странице будет отображаться ошибка 404. Индексация страниц с ошибками приводит к снижению SEO-показателей всего веб-ресурса.
Более подробно о редиректах, о типах и реализациях - можно погуглить в интернете. Их много. И реализаций - тоже.
Часто зависит от хостера. Поэтому, лучше всего, уточнить у хостера.
Я приведу пример 301 редиректа у Hostpapa.
Итак, есть у кого-то на каком-то внешнем ресурсе старая ссылка: http://www.freeserver.su/forum/topic.php?forum=5&topic=1
У нас ее уже нет.
Вместо этого у нас есть новая ссылка: https://freeserver.su/stihi/odni-my-nad-mirom-vladyki-nam-zver-podchinyaetsya-dikii-i-travy-zelenyh-polei.html
И мы хотим все запросы на старую ссылку перенаправить ( редиректить ) на новую.
Пишем в .htaccess следующий код:
RewriteEngine onПользуемся)
RewriteCond %{QUERY_STRING} ^forum\=5&topic\=1$
RewriteRule ^forum/topic\.php$ https://freeserver.su/stihi/odni-my-nad-mirom-vladyki-nam-zver-podchinyaetsya-dikii-i-travy-zelenyh-polei.html? [R=301,L]
Пояснения:
RewriteEngine: Включает/выключает механизм mod_rewrite для текущего запроса.
RewriteCond: является еще одной директивой mod_rewrite. Она позволяет устанавливать условие, которое должно выполняться для обработки URL следующим за ним правилом RewriteRule.
RewriteRule: Описывает правило изменения адреса URL.
mod_rewrite: - это модуль сервера Apache для манипуляции (изменения) URL. Часто это означает получение запроса URL от посетителя и посылка ему содержания с другого URL.
RewriteRule - это регулярки. По которым веб-сервер будет обрабатывать входящую и исходящую ссылки.
Еще пример:
Было: http://www.freeserver.su/forump/index.php?id=1051001
Стало: https://freeserver.su/stihi/odni-my-nad-mirom-vladyki-nam-zver-podchinyaetsya-dikii-i-travy-zelenyh-polei.html
Редирет 301 .htaccess будет выглядеть следующей записью:
RewriteEngine on
RewriteCond %{QUERY_STRING} ^id\=1051001$
RewriteRule ^forump/index\.php$ https://freeserver.su/stihi/odni-my-nad-mirom-vladyki-nam-zver-podchinyaetsya-dikii-i-travy-zelenyh-polei.html? [R=301,L]
Примечание:
RewriteEngine on - включает модуль апач. Если хотите написать несколько редиректов - НЕ надо перед каждым правилом его писать/включать. Один раз написали RewriteEngine on, дальше пишете правила обработка ссылок (URL).
Подробное описание следует..
Так, по крайней мере, работает у Hostpapa