Постраничный 301 редирект в htaccess. Редирект со всех файлов.htm на.html. Другие виды редиректов
Я собрал все возможные способы сделать 310 редирект, используя разные способы. Вы можете выбрать для себя все, что душе угодно.
Собственно, давайте разбираться в вариантах сделать редирект (переадресацию) правильно.
Простой 301 редирект в.htaccessЕсли ваш сервер (или хостинг) использует apache, переадресацию можно выполнить, через файл. htaccess. Этот способ, по-моему, самый простой и удобный из всех мною виденных. Важно! Не забудьте включить модули mod_alias (для поддержки правил Redirect, RedirectPermanent и RedirectMatch) и mod_rewrite в php.ini.
1. Простая переадресация со старых страниц на новые: Redirect 301 /old/ http:// domain.com/new/ или Redirect permanent /old/ http:// domain.com/new/Единственным минусом является потребность вносить все изменения вручную, то есть каждый адрес прописывается непосредственно программистом.
2. 301 редирект в.htaccess для русскоязычных ссылокЕдинственная разница, которая заняла у меня кучу времени, это потребность в точности сохранения документа в формате uft-8 без БОМ , что является очень важным моментом. Если вы сохраните в другом формате, вероятнее всего ваше перенаправление работать не будет.
В остальном все также:
Похожий способ редиректа, который описан выше за исключением того, что в этом случае можно указывать перенаправление, если вы перевели сайт с движка на php на aspx.
RedirectMatch /(.*).php$ /$1.aspx
4. Перенаправление домена с www на не-wwwOptions +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.(.*) RewriteRule ^(.*)$ http://%1/$1
еще вариант в более простом виде:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.com$ RewriteRule ^(.*)$ http://domain.com/$1
5. Редирект запросов без www на с-www Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^domain.com$ RewriteRule ^(.*)$ https://domain.com/$1так же решает аналогичную задачу:
RewriteEngine On RewriteCond %{HTTP_HOST} !^www.(.*) RewriteRule ^(.*)$ https://%1/$1
6. Редирект ссылок со слешем на без для всего сайта RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 7. 301 редирект как в пункте 6, только наоборот RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/ 8. Убираем слэш в конце главной ссылки если она без www RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://%1/$1 RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://%1/$1/ 9. Убираем слэш в конце главное ссылки, если она с www RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^www\.(.*)$ RewriteRule ^(.*)$ http://www.%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1/ RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteCond %{HTTP_HOST} ^([^www].*)$ RewriteRule ^(.*)$ http://www.%1/$1 10. Убираем с помощью правильного перенаправления /index.php (без GET) RewriteCond %{REQUEST_URI} /index.php RewriteCond %{QUERY_STRING} ^\z RewriteRule ^(.*)$ http://site.ru/? 11. 301 редирект для всех адресов где есть index.php RewriteCond %{REQUEST_URI} /index.php RewriteRule ^(.*)$ http://site.ru/ 12. Делаем переадресацию с динамического url на статическийвариант с GET
RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/?
вариант без GET
RewriteCond %{REQUEST_URI} /test/ RewriteCond %{QUERY_STRING} ^id=229 RewriteRule ^.*$ /supermodel/?
13. Делаем переадресацию всех страниц домена на один url другого домена RewriteCond %{REQUEST_URI} (.*) RewriteRule ^(.*)$ http://site.ru/ 14. Редиректы для SSL (перенаправление с http на https и наоборот)Подробнее об этом я написал , которую, в свете я предлагаю изучить.
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Редирект с помощью скриптовОчень многие осуществляют редирект с помощью скриптов. Небольшая подборка для разнообразия.
HTTP/1.1 301 Moved Permanently Location: https://new.com/new-k/new.htm PHP редирект
15. ASP редиректы
17. ASP.NET редирект
private void Page_Load(object sender, System.EventArgs e) { Response.Status = “301 Moved Permanently”; Response.AddHeader(“Location”,“https://new.com”); } 18. ColdFusion редирект
19. JSP (Java) редирект
20. CGI PERL
$q = new CGI; print $q->redirect(“https://new.com/”); Ruby on Rails def old_action headers[“Status”] = “301 Moved Permanently” redirect_to “https://new.com/”
Также существуют разные рекомендации от поисковых систем, для реализации 301 редиректа. Я рекомендую использовать рекомендации Google, в которых очень подробно изложены рекомендации о том, как правильно настроить 301 редирект .
Для размещения 301 переадресации на серверах Apache, достаточно изменить, как описано выше файл.htaccess. Если вы не понимаете, как это работает и незадачливые символы в описании выше для вас большая загадка — обратитесь к хостинг-провайдеру или напишите вопрос в комментария.
Как сделать 301 редирект (переадресацию) в WordPress с помощью плагинаОчень многие используют одну из самых популярных CMS WordPress. По разным причинам нам может понадобиться сделать редирект внутри сайта. Например, эта необходимость возникла у меня при переносе сайта на новый домен.
Самым оптимальным решением оказался плагин для WordPress, который решил все мои задачи. Минусом этого плагина была только ручное формирование списка ссылок для редиректа.
В целом плагин для WordPress вполне меня устраивает и по сей день.
Рассмотрим некоторые пояснения связанные с 310 редиректом301 редирект или ошибка сервера-301, является ответом, указанным в HTTP заголовке и говорит о том, что старый адрес имеет новый путь на постоянной основе.
** 303-я ошибка указывает на временный путь переадресации.
Редирект - это перенаправление посетителя с одного сайта на другой автоматическим путем. Словом, пользователь оказывается совсем не на той странице, адрес которой он набирал в строке поиска.
Редирект выполняется с использованием скрипта, который и осуществляет перенаправление. Выполняемый трюк полезен владельцам тех сайтов, которые хотят приобрести более благозвучное название домена.
К примеру, смена адреса интернет-магазина ведет за собой большие потери, потому что часть посетителей будет потеряна. В данном случае скрипт решает эту задачу: пользователи также набирают прежний, знакомый им адрес, но переправляются на новую страницу. Редирект поможет в случае, когда происходит скрещивание нескольких доменных имен. Адрес сайта могут набирать, указав www или просто быстро набрав основное название, но именно при помощи скрипта попадают на одну и ту же страницу.
Функция редиректа полезна не только в качестве сохранения хорошей посещаемости интернет-магазинов. Продвижение сайта стоило владельцам немалых усилий, поэтому логично, что они стремятся сохранить позиции. Для создания более успешного предприятия в рамках интернет-магазина можно склеить несколько сайтов. Для этого применяют редирект. Данный способ реализации функции редиректа, с одной стороны, является очень быстрым и надежным, с другой - поисковые системы относятся к склеенным сайтам с подозрением.
Почему так происходит?Дело в том, что поисковые сайты являются машинами, которым необходимо четко проиндексировать все ресурсы. Склеенные сайты затрудняют эффективность быстрой индексации, что, в свою очередь, снижает отлаженность их работы.
Наиболее опасны в этом контексте сайты, которые индексируются роботами, при этом направляя пользователя на тот ресурс, с которого происходит редирект. Но поисковые системы не всегда однозначно негативно воспринимают скрепленные сайты. Речь о функции 301-редирект.
Редирект-301 является услугой на уровне сервера. Он составляет исключение среди других аналогичных функций, поскольку практически все поисковые системы воспринимают его дружественно. В частности, крупнейший поисковый ресурс Google, который используют чаще всего, благосклонно перенаправляет услугой редиректа 301 на нужную страницу.
Причина успешного взаимодействия редиректа-301 с поисковыми ресурсами в том, что он коренным образом отличается от аналогичных услуг по оптимизации. Он составлен таким образом, что функционирует понятно для робота, коим является поисковая система. Редирект перенаправляет на нужный URL страницы однократно и окончательно.
Влияние 301-го редиректа на seo продвижение1. При 301 редиректе происходит склейка адресов. Роботы поисковых систем и пользователи, открывающие сайт в браузере, перенаправляются на новую страницу с новым адресом, автоматически.
2. При склейке адресов, новый url получает полный вес страницы, ссылочную массу и такие значения, как ТИЦ.
Подобный редирект — это наилучшее решение при переносе сайта на новую систему управления контента, если вы не хотите потерять позиции и рейтинг сайта. Мой seo-блог использует несколько видов 301 редиректа для перенаправления.
На этом все. Надеюсь, эта статья была полезна для вас. Если вы знаете свои собственные методы настройки редиректа, буду рад почитать о них в комментариях.
Про 301 редирект уже, наверное, сказано и пересказано множество раз в блогах, форумах и т.п. Но, как оказывается, не до всех эта информация вовремя доходит (тут я как бы намекаю на себя:). За более чем 3 года в сети я слышал про 301 редирект множество раз, иногда даже собирался его «попробовать», но давайте посмотрим фактам в лицо — так этого и не сделал. А зря! Все началось достаточно прозаически — у меня есть один сайт, который постоянно «колбасит» в плане индексации поисковиками. Вроде и ссылки там есть, и контент нормальный, а он все ни в какую не хочет стабильно работать. У меня уже почти закончились варианты подобного поведения, но тут я вспомнил про основы основ SEO и вообще продвижения — 301 редирект.
Беглый опрос в твиттере показал, что реально я чуть ли не один «забиваю» на этот важный момент. Большинство единогласно ответило, что в обязательном порядке устанавливает 301 редирект сразу при создании сайта. Более того, тут мне недавно попросили по разработке сайта добавить этот же самый 301 редирект для них, поскольку просьба пришла от продвигающей и конторы. Учитывая все эти моменты и «намеки судьбы» я понял 301 редиректу быть!
Зачем вообще нужен 301 редирект ? — спросите вы — есть несколько ситуаций в которых его можно применить:
Вообще 301 редирект нужен как для пользователей, так и для поисковых роботов — позволяет сориентировать тех и других, что есть новый сайт, домен, страница и без лишних вопросов переадресовывает их туда. Кроме того 301 редирект произведет склейку показателей сайтов и позволит не потерять позиции в поисковых системах.
Как сделать 301 редиректРешений для этой задачи есть множество, все зависит от того какими техническими средствами обладает ваш хостинг. Также в интернете есть много статей по 301 редиректу, которые можно почитать, я приведу лишь несколько, на мой взгляд, самых типичных ситуаций.
Простой редирект
Производится в файле.htaccess или httpd.conf для Apache. Самый простой вариант простого 301 редиректа для переадресации на новый домен выглядит следующим образом:
Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm
Вот еще парочка примеров простого 301 редиректа:
Redirect permanent /test http://www.test.com/ Redirect permanent / http://enter.test.com/
Здесь при попадании пользователя или робота в директорию test он перенаправится на www.test.com, все остальные попадут на enter.test.com. Для этого 301 редиректа на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).
301 редирект с помощью mod_rewrite в.htaccess
С модулем mod_rewrite вы сталкивались достаточно часто даже не подозревая этого. В частности речь идет про постоянные ссылки (permalinks) как полезный инструмент в seo оптимизации wordpress. Если в админке настроите эти самые ссылки и после этого зайдете в файл.htaccess, то обнаружите там целый ряд правил для переадресации через директиву RewriteRule. Кроме того нужно проверить чтобы была подключена опция FollowSymLinks.
Перенаправление домена с www на без-www
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain\.com$ RewriteRule ^(.*)$ http://domain.com/$1
Редирект запросов без-www на домен с www префиксом
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.(.*) RewriteRule ^(.*)$ http://www.%1/$1
Вообще использование www в названии сайта само по себе устарело, но иногда до сих пор встречается. Если вы создаете новый сайт, то конечно сразу указываете везде без www, но если получили «готовый продукт», то нужно смотреть как домен отображается в выдаче Google и Яндекс — такой редитект и оставляете дабы ничего кардинально не менять.
301 редирект старого домена на новый:
RewriteEngine on RewriteBase / RewriteRule ^rewrite\.htm$ rewrite.html
Для замены всех.htm файлов.html файлами:
HTTP/1.1 301 Moved Permanently Location: http://www.newdomain.ru/newdir/newpage.htm
Для этого, например, в PHP используем:
Данный код лучше всего вставлять в начало PHP скрипта чтобы до него ничего не выводилось (echo или print). За пояснение спасибо автору этой статьи где также найдете информацию про установку редиректа на ASP, ColdFusion и т.п., просто с php самый популярный вариант.
Примечания по 301 редиректу
Напоследок пару моментов по 301 редиректу, которые нужно помнить и с которым я так или иначе столкнулся:
- Во-первых, последовательность правил редиректа учитывается. Так что если какое-то правило не выполняется, проверьте нет ли других редиректов и не мешают ли они.
- Во-вторых, помнить синтаксис и все особенности 301 редиректа достаточно сложно, поэтому иногда здорово помогает логика и перебор некоторых вариантов:) Хотя, конечно, лучше читать официальную документацию.
- В-третьих, после внедрения 301 редиректа обязательно проверьте правила на работоспособность, зайдите не только на главную, но и пройдитесь по разделам, страницам сайта дабы потом не было проблем с этим.
Если у вас есть что добавить по 301 редиректу — пишите:)
P.S. Постовой. В наше время каждый день появляется множество интересных интернет проектов. Хотите знать все про стартапы тогда читайте новый увлекательный блог StartupWay.
После аудита и оптимизации веб-проекта следует комплексная раскрутка сайтов в поисковых системах Google и Яндекс.
Код ответа 301 (Moved Permanently) означает, что запрошенный документ теперь доступен по новому адресу на постоянной основе. Редирект 301 может понадобиться в нескольких случаях: переезд на новый домен, изменение адреса страницы или . Цели этих мероприятий вполне прозрачны:
- Перенос старых показателей на новую страницу или домен.
- Устранение битых ссылок, как внешних, так и внутренних.
- Устранение дублей страниц.
Существует несколько способов сделать 301 редирект, но я предпочитаю вариант с использованием файла.htaccess, который находится в корневой папке FTP вашего сайта (если его там нет, то просто создайте его, он не имеет расширения).
Настройка 301 редиректа со страницы на страницуДовольно часто возникает ситуация, когда страница сайта была удалена или вынуждена сменить свой URL. При обращении к её старому адресу, пользователь, само собой, увидит страницу 404 ошибки (не найдено).
Если станица маловажная, то не стоит и возиться, но если к ней часто обращались посетители сайта (и, возможно, у кого-то она сидит в закладках), если на неё ведут неподконтрольные вам внешние ссылки или, наоборот, подконтрольные внутренние, но в таких объёмах, что очень хочется их править, то настройка 301 редирект со старой страницы на новую станет для вас идеальным решением.
Также его можно использовать для борьбы с дублями страниц. В общем нужно писать книгу на тему «99 способов использование Redirect 301». Вот его синтаксис:
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
Ну или так, результат будет один и тот же:
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
Поясняю: /old-page.html - относительный адрес старой страницы. Он может быть вложенным: /old-category/old-page.html, ну или таким: /old-category/old-page/ - тут никаких ограничений нет. Тоже самое относится к http://new-domain.ru/new-page.html (новой странице), с той лишь разницей, что путь тут абсолютный (не обязательно, чтобы это был новый домен - может быть просто новый внутренний адрес страницы).
Настройка 301 редиректа при переносе сайта на новый доменНе менее понятная ситуация. Возникла необходимость переехать на новый домен, сохранив показатели старого ( , PR). В этом случае приписываем в.htaccess старого домена следующее:
Options +FollowSymLinks
RewriteEngine on
RewriteEngine off
RewriteCond %{HTTP_HOST} ^old-domain\.ru
RewriteRule ^(.*)$ http://new-domain.ru/$1
RewriteCond %{HTTP_HOST} ^www.oldsite\.ru
RewriteRule ^(.*)$ http://old-domain.ru/$1
В данном примере мы установили редирект всех страниц старого домена на страницы нового (при условии, что их относительные адреса совпадают). При этом мы оставили без редиректа на старом домене файл robots.txt, чтобы процесс переноса был более полноценным. В него мы прописываем:
User-agent: *
Disallow:
Host: newsite.ru
Sitemap: http://newsite.ru/sitemap.xml
Ну и ждём пару месяцев, пока переезд домена не будет зачтен, а все характеристики - переданы.
Склейка зеркал сайта: 301 редирект c www на без www и наоборотСуществует несколько вариантов обращения к сайту - с www и без www (например, сайт и www.сайт). Пользователю все равно, как именно вводить URL, так как он в любом случае попадет на одну и ту же страницу. Иначе дело обстоит с поисковыми системами. Они расценивают www.site.ru и site.ru, как два совершенно разных домена (что тянется из глубин истории всемирной сети, когда это действительно было так).
Эти дубли мешают индексации сайта и продвижению в целом, так как, во-первых, это банальные дубли страниц (уж извиняюсь за повторение) и, во-вторых, входящие ссылки будут также укладываться в разные корзины. Тоже самое касается и дублей главной страницы: site.ru, site.ru/index.html, site.ru/index.php и т.д. По этой причине еще на этапе создания сайта желательно позаботиться об этом вопросе и одну из версий сайта (например, c www) переадресовать на другую (например, без www). Если момент был упущен, то тут нет ничего страшного.
Рассмотрим процесс склейки зеркал с помощью 301 редиректа поэтапно.
1. Определяем основной домен, выбранный для индексации поисковыми системами.
Основное зеркало можно легко определить по результатам поисковой выдачи Яндекс и . Вводим название домена и смотрим, какой адрес отобразится: www.site.ru или site.ru. Если же сайт еще не проиндексирован, то выбираем его по своему усмотрению. Если в Google и Yandex основные домены разные, то лучше оставьте Яндексовский.
2. Прописываем 301 редирект в.htaccess.
Находим в корне FTP сайта файл.htaccess, скачиваем и открываем в блокноте, а затем вносим в него необходимые изменения. Первый вариант - 301 редирект домена без www на с www:
Options +FollowSymLinks
RewriteEngine On
RewriteEngine off
RewriteCond %{HTTP_HOST} ^site.ru$
RewriteRule (.*) http://www.site.ru/$1
Обратная ситуация - с www на без www:
Options +FollowSymLinks
RewriteEngine On
RewriteEngine off
RewriteCond %{HTTP_HOST} ^www.site.ru$
RewriteRule (.*) http://site.ru/$1
После завершения редактирования, сохраняем файл и загружаем его в корневую папку FTP с перезаписью.
Опционально можно сразу же позаботиться о дублях главной страницы вида index.php и index.html, добавим ниже следующий код:
RewriteRule ^index\.html$ http://www.site.ru/
RewriteRule ^index\.php$ http://www.site.ru/
Ну и, опять же, если у вас site.ru:
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://site.ru/
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.ru/
3. Настройка robots.txt
Увидели знакомую директиву, оставляющей robots.txt нетронутым? Все верно, вносим изменение в robots.txt:
Host: основное-зеркало.ru
4. Проверяем работу сайта.
Вводим тот адрес, который с которого мы проставляли редирект, например www.site.ru или site.ru/index.html и если при заходе на него происходит переход на site.ru, то всё настроено правильно.
5. Настройка Yandex и Google вебмастер.
Дополнительно применяем соответствующие настройки в личных . В случае с Yandex:
Ну и для Google:
На этом вроде всё. Удачи вам и если появятся вопросы, то пишите в комментариях.
Редирект – это способ переадресации пользователей и поисковых роботов на URL адрес, который отличается от первоначально запрошенного. Существует несколько видов переадресации, некоторые из которых приведены ниже.
301 Moved Permanently
301 – постоянный редирект, который указывает на то, что запрашиваемая страница находится по новому адресу, а старый нужно считать устаревшим. Такой вид редиректа передает 90-99% ссылочной массы на новый URL.
Канонизация или склейка доменаДля склейки домена с www на без www:
RewriteCond %{HTTP_HOST} ^www.site\.com$ RewriteRule ^(.*)$ http://site.com/$1
Для склейки домена с без www на с www:
RewriteCond %{HTTP_HOST} ^site\.com$ RewriteRule ^(.*)$ http://www.site.com/$1
Для правильного выбора метода склейки нужно рассмотреть такие факторы:
- У какого варианта выше индексация;
- У какого варианта выше позиции в выдаче;
- Канонизация слэша в конце адреса.
При создании проекта сайта нужно решить, использовать ли слэш в конце адреса. Для поисковых систем адреса вида:
- http://www.site.com/category1
- http://www.site.com/category1/
Являются разными URL. Поэтому когда решите, какого вида будут адреса у вас на сайте, нужно прописать такой код для того, чтобы убрать слэш в конце:
RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ RewriteRule ^(.*)(/)$ $1
или такой, чтобы добавить его:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/
Для редиректа 301 одной страницы на другую :
Redirect 301 /oldpage.html http://www.site.com/newpage.html
Чтобы убедиться, что при запросе любой версии главной страницы, к примеру: default.htm или index.html , будет произведен редирект на каноничную страницу http://www.site.com , нужно прописывать следующий код редиректа:
RewriteCond %{THE_REQUEST} ^{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1
Редирект каталогаЕсли в адресе у вас отображается структура каталога, то при изменениях у вас будет менять и адрес. Поэтому нужно прописывать такой редирект:
RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2
Но бывает так, что адрес старого каталога отображается сразу после доменного имени, например www.site.com/old-catalog/ . В этом случае используется такой код:
RewriteRule old-catalog /(.*) / old-catalog /$1
Редирект при изменении расширения файлов
При смене CMS обычно меняется только расширении файлов. Для канонизации страниц в этом случае нужно использовать код вида:
RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html
Редирект при появлении нескольких слэшей или тире
По разным причинам бывает, что в адресе появляются лишние слэши или тире, например www.site.com/catalog////page-1.html . Такие страницы нужно переадресовывать на адреса с одним слэшем .
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2
Таким же образом убираются и лишние тире в адресе, например изменение www.site.com/catalog/page-1.html на www.site.com/catalog/page-1.html .
RewriteCond %{REQUEST_URI} ^(.*)-(.*)$ RewriteRule . %1-%2
.htaccess - лишние слэши после имени домена
- http://site.com//////catalog
Чтобы убрать все эти слэши так, чтобы было перенаправление на страницу без слэшей, т.е.
- http://site.com/catalog
Нужно прописать:
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2
Генерация 301 редиректов
Если технических знаний для написания собственного кода не хватает, то есть специальные сервисы генерации всех основных редиректов:
Здесь вы можете, вставив свои данные, мгновенно получить нужный код. Поддерживаются редиректы для доменов, url адресов, каталогов.
Как проверить 301 редирект?После внесения любых изменений в логическую часть редиректа, нужно проверять его работоспособность. Для мануальной проверки нужно:
- Проверить работает ли вообще сайт – зайти на его главную страницу;
- Побродить по сайту, его разделам и отдельным страницам.
Но есть и сервисы для автоматической проверки редиректа:
- http://bertal.ru – очень подробные данные обо всех откликах сервера
Правила использования 301 редиректа vs Canonical
Поисковая система Google устанавливает четкие правила, только при соблюдении которых, она будет верно трактовать ваши действия. Вот как буквально понимают поисковики 301 и Canonical:
- – данная страница является устаревшей, новая страница находится по адресу такому-то. Прошу удалить старую страницу из индекса, а новую проиндексировать и полностью передать на нее весь вес старой.
- Canonical – кроме этой версии страницы у меня есть еще и другие. Но ты, пожалуйста, индексируй только ту, на которой стоит Canonical. Другие версии будут лежать для того, чтобы их могли просматривать люди, но тебе включать их в индекс не нужно. Весь вес стоит передавать именно на страницу с Canonical.
Предпочтения по использованию редиректа 301
Обычно, это наиболее предпочтительный метод:
- Для отдельных страниц – если навсегда изменился ее адрес;
- Для доменов – если сайт будет находиться постоянно на новом домене;
- Для страниц 404 и страниц с контентом, который более не актуален. К примеру, при удалении товара из каталога можно сделать редирект на похожий по функциям товар или на страницу каталога с этим типом товаров.
Когда лучше не использовать редирект 301
- Если их реализация невозможна или она займет неоправданно много времени.
- Если контент дублируется на двух страницах, но обе они должны быть доступны пользователю ввиду некоторых отличий (к примеру, размера одежды).
- Если одна страницы имеет несколько URL (сортировка каталога по разным критериям).
- Для кросс-доменов, когда контент на двух адресах может дублироваться, но он должен быть на каждом из доменов.
Понравился пост? Нажми на кнопочки →