Htaccess 301 редирект на другой домен – 301 редирект в htaccess с одного домена на другой

Содержание

301 редирект в htaccess с одного домена на другой

Добрый день мои дорогие слушатели/читатели/смотрители

Сегодня я расскажу вам про правильную склейку доменов и 301 редирект через файл htaccess.

Признаюсь честно — давненько я уже не писал, все дело в моем личном времени – к сожалению, оно не резиновое и его катастрофически не хватает в последнее время. Жена в роддоме, так что сын и все домашнее хозяйство лежит на мне, а если учесть, что я еще провожу тренинг и у меня есть свои ученики – сами можете представить – сколько у меня времени.

Но давайте ближе к делу!

Почему так важно, что бы сайт был склеен, точнее домен?

Дело в том, что поисковые машины (вроде Яндекс и Google) видят не один сайт, а два. Поясняю:

Допустим, у меня есть домен seregakolt.com, и поисковики видят их два.

— первый seregakolt.com

— второй www.seregakolt.com

Т.е. один и тот же сайт с www и без — поисковыми системами воспринимается их как два различных ресурса.

Какие у этого могут быть последствия? Да самые что ни на есть печальные!

Когда на ваш ресурс будут ставить ссылки – они могут быть как с www так и без, в названии домена. И, в принципе, человек, который будет проходить по ним все равно попадет на ваш сайт.

Но что касается поисковиков – они будут воспринимать их как ссылки на разные сайты и вы будете просто терять часть ссылок! Т.е. часть PR и ТИЦ будут переходить на другой домен.

Получается, что если вы будете раскручивать сайт без www – а поисковая система первым нашла сайт с www, то сайт без www будет восприниматься как дубликат – и все ваши старания будут напрасны, так как он просто выпадет из рейтинга!!!

Таким образом вы будете терять посетителей!

Естественно, когда вы склеите свой домен, все ссылки будут приводить на один сайт, с www – либо без. Как вы уже сами выберете. И поисковая система будет воспринимать все как один сайт, сохраняя его авторитет.

Я знаю, что это чистой воды тупость, но уж так устроены наши поисковики, а раз они приводят львиную долю посетителей – значит, их привередливый характер и бестолковые заскоки нужно учитывать и относиться к ним серьезно!

Как работает 301 редирект и склейка доменов?

Все банально просто – поисковикам указывается главное зеркало и они вес ссылок переводят на его!

Причем склеить можно абсолютно разные домены! Т.е. если у вас сайт был раньше на одном домене, и вы хотите его перевести на другой, но при этом не потерять ссылки, ТИЦ и PR – склейка доменов вам поможет.

Пример можете посмотреть прямо на этом здесь. Попробуйте набрать www.master-css.com и вас все-равно перебросит на master-css.com

И www будет удаляться из любых ссылок на мой сайт. И если кто то поставит ссылку с www, поисковик передаст весь ее вес домену master-css.com

Делаем 301 редирект через файл .htaccess

Сложного в этом ничего нет! Все делается простой правкой (созданием и правкой) файла в обычном блокноте.

Те, у кого CMS MaxSite – могут спокойно просто редактировать этот файл – он идет в комплекте системы!

Если у вас этого файла нет – тогда мы его просто создаем, название файла

.htaccess – без каких либо расширений!

Возможно, Windows будет выпендриваться и говорить, что надо задать имя – тогда создайте этот файл через Total Commander или создайте его в любом редакторе (можно в обычном блокноте).

В большинстве случаев он идет вместе с CMS и должен быть у вас на хостинге в корневом каталоге сайта.

Если его там нет – создавайте и размещайте.

Если есть – просто редактируйте.

Теперь определитесь – какой домен вы хотите сделать главным и в путь по инструкциям ниже!


Редирет 301 с www на без www:

Открываем этот файл и добавляем в него следующий код:[]

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain.com
RewriteRule ^(.*)$ http://domain.com/$1 [R=permanent,L]

Обратите внимание, что последние две строчки должны идти сразу за строкой RewriteEngine On – это важно!


И наоборот с без www на с www:
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Просто вместо двух последних строчек напишите эти.

Если у вас есть этот файл, и там содержатся какие-то из этих строчек, но перед ними стоит знак # — это значит что строчка закомментирована и силы не имеет.

Уберите его!


301 редирект с одного домена на другой:
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Эту строчку вставляем вместо тех двух.

ОБЯЗАТЕЛЬНО:

1. Должна быть строка Options +FollowSymLinks

2. Должна быть строка RewriteEngine On

3. Строчки с редиректом должны идти СРАЗУ после строки RewriteEngine On

4. Файл .htaccess называется так, и никак иначе!

5. Файл .htaccess должен находиться в корневом каталоге!

6. Domain.com – не забудьте поменять на свой домен.

В принципе, это вроде все. Но 301 редирект хорошо понимает Google, а вот для Яндекса надо редактировать/создавать другой файл. Так что шаг ниже является – обязательным!


Склейка доменов для Яндекса:

Опять же идем в корневой каталог сайта и ищем файл с названием robots.txt, если его нет – создаем в обычном блокноте.

В этом файле размещаем следующий код:

User-agent: Yandex
Disallow:
Host: domain.com

Если у вас этот файл есть, а этих строк нет – значит добавьте их в конце через абзац.

Указываете главное зеркало в строчке Host — не забудьте поставить свой домен

Для тех, кто заказывает раскрутку у частных лиц и компаний.

Конечно, это очень редкий случай, но все же… Предупрежден – значит вооружен!

Иногда злостные оптимизаторы могут склеить свой домен с вашим и раскручивать себя.

Т.е. этот гЛавнюк склеивает и закупает ссылки и рекламу на свой домен, и пока он склеен с вашим – у вас растут пузомерки и посещалка.

И если вы через некоторое время прекращаете сотрудничество, он может спокойно убрать редирект со своего домена на ваш и вся раскрутка за ваши деньги достанется ворюге.

Причем у вас на сайте может остаться файл robots.txt с главным зеркалом на его сайт.

Будьте бдительны! И требуйте постоянных отчетов работ.

Спасибо за внимание, на связи был Серёга!

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

master-css.com

Редирект через .htaccess | REG.RU

Добавьте в .htaccess код из нужного вам примера редиректов ниже:

  • Редирект всех страниц с http:// на https://

Редирект всех страниц с http:// на https://, в том числе и с http://www на https://

вариант 1

        RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
    

или, если первый вариант не поможет, воспользуйтесь вторым вариантом:

вариант 2

        RewriteEngine On
RewriteCond %{HTTPS} =off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
    

если все варианты не помогли и возникает циклическая переадресация:

вариант 3

        RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    

вариант 4

        RewriteEngine On 
RewriteCond %{ENV:HTTPS} !on 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
  • Редирект на https только выбранной страницы

В примерах ниже редирект настраивается для страницы login.php.

вариант 1

        RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
    

или

вариант 2

        RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REQUEST_URI} =/login.php
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
    
  • Редирект на https всех страниц, кроме одной

В примере ниже редирект настраивается для страницы test.php.

        RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/test.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
    

www.reg.ru

Переадресация с одного домена на другой (редирект домена)

Периодически, к нам обращаются наши клиенты, с вопросом, как сделать переадресацию сайта с одного домена на другой. Как правило, этот вопрос задают в двух вариантах:

  • сайт открывается по 2 адресам: www.mysite.ua и mysite.ua (для поисковых машин это существенная разница и они воспринимают 2 адреса, как 2 разных сайта), поэтому необходимо сделать чтобы при обращении к страницам сайта с www, шла переадресация на такие же страницы сайт без www, например с http://mysite.ua/news/ на http://www.mysite.ua/news/ (или наоборот).

  • у вас есть несколько доменов, основной mysite.ua и альтернативный my-site.ua и/или кириллический мойсайт.укр. Необходимо, чтобы при наборе в браузере адреса my-site.ua и/или мойсайт.укр посетитель автоматически перенаправился на сайт mysite.ua.

1. Перенаправление домена в файле .htaccess.

1.1. С www-домена на основной домен

Если на вашем сервере включен модуль mod_rewrite, то того, чтобы настроить переадресацию с адресов, начинающихся с www на аналогичные без www, нужно в файле .htaccess, в корневой папке www вашего сайта прописать следующие строки:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

1.2. С основного домена на www-домен

RewriteEngine On
RewriteCond %{HTTP_HOST} !^(www.) [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

1.3. С одного домена на другой

Задача может быть решена так же как и первая, для настройки перенаправления посетителей с одного доменного domain1.ua имени на другое domain2.ua вы можете использовать соответствующие директивы в файле .htaccess.

Сделать на старом домене domain1.ua файл .htaccess, с содержанием:

RewriteEngine On
RewriteCond %{HTTP_HOST} domain1.ua
RewriteRule (.*) http://domain2.ua/$1 [R=301,L]

1.4. Перенаправление с нескольких доменов

Необходимо сделать переадрессацию с доменов domain1.ua и www.domain1.ua на новый домен domain2.ua, для это впишите:

RewriteCond %{HTTP_HOST} ^domaim1\.ua
RewriteRule ^(.*)$ http://domain2.ua/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.domain1\.ua
RewriteRule ^(.*)$ http://domain2.ua/$1 [R=301,L]

Аналогично можно делать перенапрвление с domain.ua на domain.com и т. п.

Однако если вы размещаетесь на тарифном плане с ограниченным числом доменов, включенных в тариф, то настройка сайта с одним только файлом .htaccess лишит вас еще одного домена в квоте по тарифу, что не всегда приемлемо. В этом случае можно воспользоваться специальным сервисом панели управления хостингом.

2. Перенаправление домена в панели управления хостингом

На примере панели управления «cPanel»

101

Вы можете выбрать варианты перенаправления – 301 или 302.

301 редирект — это постоянное перенаправление. Т.е. при установке 301 редиректа всем, в том числе поисковым машинам, будет сообщено, что запрашиваемая страница навсегда «переехала» на новый адрес. Такое перенаправление необходимо, например, при переезде с одного доменного имени на другое. Таким образом, вы не потеряете поисковый трафик, а поисковые машины будут оповещены о смене адреса.

302 редирект — это временное перенаправление. Таким образом, пользователи, вызывая страницу, на которую установлен 302 редирект, будут получать ответ с указанного в редиректе адреса. Однако в поисковых машинах прежний адрес останется и будет удерживать свои позиции.

Также, можно выбрать опции перенаправления, связанные с синонимом сайта с www. Обратите внимание, что переадресацию с домена http://www.site.ua/ на http://site.ua/ средствами cPanel сделать не удастся. Подобный редирект создается с помощью файла .htaccess.

Управление перенаправлением выглядит довольно стандартно. Вы можете удалить созданный параметр:

102

3. Перенапрвленеи кирилличнский доменов

Переадрессация кириилических доменов ничем не отличается от обычного (на латинице). Просто необходимо использовать конвертер punycode .

Punycode – это метод преобразования символов, относящихся к стандарту Unicode, в последовательность символов, содержащих только символы в кодировке ASCII, а именно 26 букв латинского алфавита (a-z), цифры (0-9) и символ дефиса (всего 37 символов).

Домены, содержащие символы национальных алфавитов называют IDN-доменами. Некоторые сервисы не поддерживают IDN представление доменов. Поэтому не работает домен УКР или другие IDN-домены. В таком случае необходимо использовать имя домена после Punycode-конвертации.

Например, домен http://мойсайт.укр/ после кодирования (можно воспользоваться сервисом http://wwhois.ru/punycode.php) становится http://xn--80arbjktj.xn--j1amh/ , его-то мы и вписываем в уже знакомый код

RewriteEngine On
RewriteCond %{HTTP_HOST} http://xn--80arbjktj.xn--j1amh/
RewriteRule (.*) http://domain2.ua/$1 [R=301,L]


или в соответствующую строку в панели управления.

blog.ukrnames.com

301 редирект в htaccess — все примеры и правила настройки

Вероника Аш

Копирайтер. Создаю коммерческие тексты и продающие страницы

Поделитесь статьёй с друзьями и коллегами

Файл .htaccess относится к числу конфигурационных, он служит для настройки серверов, работающих через Apache. Внесение изменений в этот файл по определенным правилам помогает настроить работу сайта.

Например, директива 301 отвечает за автоматическое перенаправление пользователя с одной страницы на другую.

Важно: в процессе изменения файла .htaccess и последующего сохранения нужно сохранять кодировку UTF-8 без специальных символов BOM. Для этого лучше всего создавать файл и редактировать его не в стандартном «Блокноте», а в специальных программах-редакторах, например, Notepad++.

При сохранении файла в название следует добавить формат «.htaccess», убрав расширение .txt.

Настройка редиректа 301 позволяет ускорить процесс автоматического перевода пользователя на нужную страницу, если старая по каким-то причинам неактуальна.

Общие правила настройки редиректа 301

  •  В списке правил редиректа простые переадресации отдельных страниц должны стоять выше, чем «общие» для всего сайта, такие как редирект с www на https.
  •  редирект должен быть один. Перенаправление пользователя или поискового бота делается только один раз, без промежуточных страниц.
  •  в верхних строках файла должны быть прописаны специальные команды Options +FollowSymLinks и RewriteEngine On (до обозначения всех правил редиректа)
  •  правила RewriteRule выполняются при помощи строки RewriteCond
  •  задавать дополнительные опции для применяемых правил можно, перечисляя их в квадратных скобках через запятые, например, [R=301,L]
  •  на хостинге необходимо подключить модули mod_alias (они позволяют поддерживать правила Redirect, RedirectPermanent и RedirectMatch).

Редирект в htaccess с одной страницы на другую

Redirect [status] /начальная_страница http://конечная_страница_полный_адрес

Это правило регулирует прямой переход с одной страницы на другую.

В поле status необходимо вписать код 301.

В поле «начальная страница» указывается не полный адрес домена, а относительный (URL после слэша «/»).

Конечная страница при этом прописывается полностью: название URL и протокола.

Пример простого редиректа

Redirect 301 /page1.php https://website.ru/page2.php

301 редирект с домена без www на домен www с префиксом

RewriteCond %{HTTP_HOST} ^webweb\.ru$ [NC]

RewriteRule ^(.*)$ http://www.webweb.ru/$1 [R=301,L]

301 редирект с www на домен без www

RewriteCond %{HTTP_HOST} ^www.webweb\.ru$ [NC]

RewriteRule ^(.*)$ http://webweb.ru/$1 [R=301,L]

Редирект для HTTPS-версии сайта

RewriteCond %{SERVER_PORT} ^80$ [OR]

RewriteCond %{HTTP} =on

RewriteRule ^(.*)$ https://webweb.ru/$1 [R=301,L]

Редирект статических страниц

Redirect 301 /page1.php http://www.webweb.ru/page2.php

В новом адресе (страница переадресации) указывается URL полностью

301-редирект для страницы с GET параметрами

Со страниц, имеющих параметры GET, переадресация на новый адрес выглядит следующим образом:

http://www.webweb.ru/dir/index.php?IBLOCK_ID=2&SECTION_ID=222

RewriteCond %{QUERY_STRING} ^IBLOCK_ID=2&SECTION_ID=222$ [NC]

RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

Переадресация со страниц без заданных параметров

Для cтраницы, на которой параметры не заданы, например http://www.webweb.ru/?111 переадресация выполняется с помощью следующего правила:

RewriteCond %{QUERY_STRING} ^111$ [NC]

RewriteRule ^$ /? [R=301,L]

301 редирект для отдельных файлов из папки

Допустим, что необходимо переадресовать только страницу

http://www.webweb.ru/dir/

и оставить на месте страницу http://www.webweb.ru/dir/index.php?IBLOCK_ID=2, которая должна находиться на своем месте.

Для этого применяется правило со специальным символом $.

RewriteRule ^dir/$ http://www.webweb.ru/new-dir/ [R=301,L]

Переадресация страниц в зоне РФ

Адреса кириллических доменов, например, в зоне РФ подчиняются тем же правилам, что и URL, записанные латиницей, при этом кириллические символы заменяются альтернативной кодировкой на латинице.

Переадресация с одного домена на другой

RewriteCond %{HTTP_HOST} ^old-webweb\.ru$ [NC]

RewriteRule ^(.*)$ http://www.new-webweb.ru/$1 [R=301,L]

301 редирект папок, оканчивающихся на слэш

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !\..{1,10}$

RewriteCond %{REQUEST_URI} !(.*)/$

RewriteRule ^(.*)$ http://www.webweb.ru/$1/ [L,R=301]

301 редирект папок, не имеющих слэша

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^(.+)/$

RewriteRule ^(.+)/$ http://www.webweb.ru/$1 [R=301,L]

Переадресация со старого адреса на папку с новым адресом

RewriteCond %{HTTP_HOST} ^web-web\.ru$ [NC]

RewriteRule ^(.*)$ http://www.webweb.ru/web-web/ [R=301,L]

Переадресация полной папки на указанный файл

RewriteRule ^dir(.*)$ /new-file.php [L,R=301]

Переадресация всей папки, за исключением указанного файла

RewriteRule ^dir/no-file.html /no-file-new.html [L,R=301]

RewriteRule ^dir(.*)$ /all.php [L,R=301]

Замена расширения с html на php

RedirectMatch 301 (.*)\.html$ http://www.webweb.ru$1.php

Устранение дублей URL с HTTPS

RewriteCond %{HTTPS} «on»

RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Перенос домена на протокол HTTPS

RewriteCond %{SERVER_PORT} ^80$ [OR]

RewriteCond %{HTTP} =on

RewriteRule ^(.*)$ https://webweb.ru/$1 [R=301,L]

Путь к странице ошибки 404

ErrorDocument 404 /404-for-me.php

Важно: расположение строк в файле имеет значение. Все внесенные в файл правила выполняются в строгом соответствии с порядком их внесения.

То есть, чем выше строка, тем раньше выполняется правило, и наоборот.

301 редирект с автоматической генерацией кода

Самый простой способ не ошибиться с кодом редиректа — использовать автоматический генератор htaccess, например, Lenartools. Достаточно выбрать параметры перенаправления, например, со страницы с www на страницу без www, указать адрес, с которого требуется перенаправить поискового бота и пользователя, и нужный код будет сгенерирован автоматически, без мучительного мануального создания нужной комбинации.

Схема простая, понятная и не требующая даже простых навыков веб-мастеринга. 

Вам понравилась статья? 0 0

otzyvmarketing.ru

Редирект с поддомена на основной домен через htaccess

Небольшая инструкция по настройке перенаправлений с поддоменов на веб-сервере Apache с помощью .htaccess.

Редирект со всех поддоменов на основной домен

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.+).site.ru$
RewriteRule (.*) https://site.ru/$1 [L,R=301,QSA]
Цель:
  • Учитываем различные виды поддоменов.

Перенаправление с одного домена на другой домен

RewriteRule (.*) https://www.newdomain.com/$1 [R=301,L]
Цель:
  • Перенаправление на основной домен или любой другой домен.

Редирект с одного поддомена на домен

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^poddomen.site.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru%{REQUEST_URI} [R=301,NC,L,QSA]

Редирект с WWW на без WWW одного домена

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^site\.ru [NC]
RewriteRule (.*) https://site.ru/$1 [R=301,L]

или

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ https://site.ru/$1 [R=301,L]
Цель:
  • Склейка дубликата по www с главным зеркалом

htaccess: ограничение доступа к dev по ip

Делаем редирект с поддомена dev на главный домен, если ip не входит в диапазон значений:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^dev\.site\.ru$
RewriteCond %{REMOTE_ADDR} "!^хх\.хх\.хх\.хх"
RewriteRule .* https://site.ru/$0 [QSA,L,R=permanent]
  • Где хх\.хх\.хх\.хх — ваш IP адрес компьютера, с которого производите посещения (т.е. задаем исключение, кому разрешаем доступ к тестовым версиям).
  • Если несколько IP -адресов — добавляете строчки.
Цель:
  • Ограничить доступ для других лиц;
  • Не позволять индексировать поисковикам тестовые домены.

Также узнайте: Чем отличается 301 редирект от 302?

Обновлено: 19.10.2019 1015 (в день: 16.111)

soltyk.ru

переадресация на другой домен и перенаправление на другую страницу

Доброго воскресного дня!

Очень часто на форумах можно встретить вопросы, посвящённые .htaccess — файлу конфигурации веб-сервера Apache. Основной камень преткновения в том, что при разработке не стояла задача удобной конфигурации для конечного пользователя (в дистрибутив не включена оболочка для визуальных установок с помощью галочек, выпадющих списков и тому подобное), зато администраторы серверов справляются с этой задачей замечательно, довольствуясь «маном» (от команды Linux — man — краткое руководство от разработчиков, или в данном случае — от профессионалов для профессионалов).

В большинстве случаев требуются совсем несложные манипуляции: безусловный редирект на другой сайт, либо перенаправление с одного места в другое (допустим, когда поменялся URL раздела). И каждый человек начинает считать, что уж его-то проблемы точно нигде нет, и даже бесполезно искать решение в интернете и поиске по форуму. Давайте же посмотрим, что эти проблемы таковыми на самом деле не являются.

Редирект .htaccess

Редирект .htaccess: постоянное перенаправление, 301

Подобная штука имеет разные названия. Непонятки может вызвать разве что число — почему же 301? Суть кроется в самом протоколе HTTP, который на запросы клиента отвечает определённым кодом состояния. Код 404 Not Found (Страница не найдена) известен почти всем. Код 200 OK почти не известен, но именно он означает, что всё в порядке и документ будет показан в браузере. А вот код 301 Moved Permanently означает, что документ окончательно перебрался на новый адрес. Именно его и называют чаще всего перенаправлением, хотя общий пул ответов обозначен как — 3xx: Redirection.

У Apache есть несколько возможностей для осуществления редиректов. Модуль mod_rewrite предоставляет отличный механизм работы с перенаправлениями, и в дальнейшем я буду использовать в примерах именно его. В модуле mod_alias тоже имеются директивы для редиректов с определённого адреса или с адреса, который соответствует регулярному выражению:
Redirect permanent / http://newsite.ru/
RedirectMatch permanent .* http://newsite.ru/

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

В общем случае, для безусловного внешнего (назовём его пользовательским) редиректа, при котором браузер автоматически переадресовывается на другую страницу, обычно незаметно для пользователя (изменяется адресная строка), можно в .htaccess поместить такой код:
RewriteEngine On
RewriteRule .* http://newsite.ru/ [L,R=permanent]

Здесь, первая строка включает механизм модуля mod_rewrite, который позволяется вытворять с адресами всё, что угодно. Назовём это преобразованием URL по условиям на лету. Вторая строка определяет непосредственно правило для преобразования, в примере выше все запросы редиректятся на http://newsite.ru/. В квадратных скобках размещаются флаги: L — последнее (Last) правило, R — тип перенаправления (Redirect), указывается в виде R=code, где code — буквенное или числовое обозначение (permanent или 302).

На самом деле, mod_rewrite — штука очень полезная, ведь именно благодаря этому многие движки активно используют так называемые ЧПУ (Человеку Понятный URL). Если вам незнаком этот термин, поясню на примере. Статья про бесплатные движки для сайта имеет адрес:
https://a-panov.ru/2014/11/free-cms/

Взглянув на этот URL, сразу видно, что статья опубликована в ноябре 2014. Убрав название с заключающим слешем — https://a-panov.ru/2014/11/ — получим список всех публикация за ноябрь. Обычные адреса, вида:

https://a-panov.ru/?p=389

особой дружелюбностью не отличаются. Увидев такой адрес, нельзя сказать о странице, на которую он ведёт, решительно ничего.

Этот способ хорош, когда вам неважно, на какую страницу нового сайта ссылаться. Но если вы переехали на другой домен, то желательно делать редиректы всех запросов с сохранением адресов. Для этого используйте такой код:
RewriteRule ^.*$ http://newsite.ru/$0 [QSA,L,R=permanent]
Новый флаг QSA сохранит так же и параметры, которые можно встретить в адресах после знака вопроса. В уже знакомом примере:

https://a-panov.ru/?p=389

если я размещу в .htaccess код выше, то произойдёт перенаправление на адрес http://newsite.ru/?p=389 чего без данного флага не было бы.

Здесь и дальше я буду опускать директиву включения преобразований:
RewriteEngine On
просто помните: если вы пользуетесь механизмом mod_rewrite, то все условия/преобразования должны выполняться после данной директивы. Для отключения используется такая строка:
RewriteEngine Off
соответственно, для каждого правила нет нужды постоянно «включать» преобразования — это начинает делаться автоматически, сразу после первой директивы.

Как настроить редирект на www (или без www)

Подобные перенаправления требуются для случаев, когда сайт доступен по вариантам nsite.ru и www.nsite.ru, в этом случае поисковики считают их дублями и могут либо самостоятельно выбрать один из вариантов в качестве главного зеркала, либо в поиске будут варианты с обоих доменов. В общем случае, это отрицательный фактор при ранжировании сайта.

Вариант попроще, для одного домена. Перенаправление производится с поддомена www.site.ru на site.ru:
RewriteCond %{HTTP_HOST} ^www\.nsite\.ru$
RewriteRule .* http://nsite.ru/$0 [QSA,L,R=permanent]

Здесь появилась новая директива RewriteCond, которая задаёт условие, при котором должны срабатывать редиректы — правила RewriteRule. Условие, в данном случае, имя домена, соответствующее www.nsite.ru (в регулярных выражения символ точки означает «любой символ», поэтому его желательно экранировать с помощью обратного слеша).

Обратное перенаправление тоже выполнить очень просто:
RewriteCond %{HTTP_HOST} ^nsite\.ru$
RewriteRule .* http://www.nsite.ru/$0 [QSA,L,R=permanent]

Оба варианта рабочие, но у них есть маленький минус — для каждого нового конфига необходимо заменять домен nsite.ru на свой собственный. Нельзя ли сделать уникальный вариант? Легко!

Редирект с любого поддомена www:
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule .* http://%1/$0 [QSA,L,R=permanent]

Редирект на поддомен с www:
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* http://www.%{HTTP_HOST}/$0 [QSA,L,R=permanent]

%{HTTP_HOST} — текущий домен

Как создать .htaccess

Такие вопросы тоже возникают. Проблема в том, что стандартный Проводник (приложение в Windows, отвечающее за графический интерфейс) не позволяет создавать файлы, начинающиеся с точки (созданием файлов или папкок осуществляется щелчком правой кнопкой на рабочем столе или в окне, и выбора нужного действия из списка Создать). Но выход есть: открывайте стандартный рекдатор Notepad (блокнот), в меню выбираете Файл → Сохранить как…, и в качестве имени сохраняемого файла указываете .htaccess — после этого он будет создан.

Файл .htaccess не работает

Бывают случаи, когда директивы из файла не работают. Обычно это вызвано тем, что в конфигурации Apache отключена поддержка .htaccess, за что отвечает директива:
AllowOverride none

Обычно это делается, чтобы несколько увеличить быстродействие — в этом случае веб-сервер не производит поиск и разбор .htaccess.

Возможен и такой вариант, что на сервере не используется Apache, например, IIS — основной «гость» на Windows-хостинге. Для уточнения свяжитесь с поддержкой своего хостера.

Есть ли какой-нибудь аналог .htaccess в nginx?

Ещё один довольно частый вопрос. В этом веб-сервера такой возможности нет. Однако, подобное обычно и не требуется. Дело в том, что nginx, как правило, устанавливается в качестве фронденда, т. е. принимает и обрабатывает все запросы, которые либо выполняет сам, либо перенаправляет на бэкенд, роль которого может выполнять Apache, который можно дополнительно конфигурировать с помощью .htaccess.

Автор публикации

2 054

не в сети 6 дней

x64 (aka andi)

Комментарии: 2877Публикации: 404Регистрация: 02-04-2009 Редирект .htaccessЗагрузка…

a-panov.ru

301 редирект или переадресация через .htaccess

Поделись, не будь жмотом

Последнее обновление

Время чтения: 2 минуты

301 редирект (301 Moved Permanently) — это перенаправление пользователя с одной страницы (url) на другую.

Зачем нужен 301 редирект

  • передача ссылочного веса
  • правильное избавление от старых страниц
  • сохранение позиций (полное или частичное) при смене урлов
  • избавление от дублей внутри сайта (если такое есть)
  • переезд сайта на новый домен или протокол HTTPS
  • склейка доменов

Как сделать 301 редирект с помощью файла .htaccess?

Примеры будем рассматривать на сайте вида site.ru

Склейка домена с www с вариантом без

Для поисковых систем site.ru и www.site.ru — это два разных домена. Если у вас не настроена переадресация с одной версии домена на другую, в выдаче поисковых систем могут появиться дубли страниц. При базовой технической оптимизации в файле robots.txt прописывается обязательное правило с указанием главного зеркала сайта, но также для подстраховки необходимо настроить и редиректы. Это не будет лишним точно.

Настраиваем редирект с http://www.site.ru на site.ru. Здесь главное зеркало сайта это http://site.ru

RewriteCond %{HTTP_HOST} ^www\.(.*)$

RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

301 редирект при переезде на HTTPS

Поисковые системы в последние годы обозначили тренд на безопасность и рекомендуют всем вебмастерам переводить сайты на защищенный протокол https

RewriteCond %{HTTPS} !=on

RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Если нужно сделать наоборот:

RewriteCond %{HTTPS} «on»

RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Стандартная переадресация с одной статической страницы на другую

Часто бывает, что на сайте какие-либо страницы устаревают, становятся неактуальными или просто вебмастеру необходимо привести урл страницы к ЧПУ виду.

Например, нужно настроить 301 редирект со страницы http://www.site.ru/page1/ на страницу http://www.site.ru/prodvizhenie-saytov/

RewriteCond %{REQUEST_URI} ^/page1/$

RewriteRule ^.*$ http://www.site.ru/prodvizhenie-saytov/? [R=301,L]

301-редирект с домена на домен

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

Для полной передачи веса с одного домена на другой одних редиректов будет не достаточно, но об этом не в этой статье.

RewriteCond %{HTTP_HOST} ^old-site\.ru$ [NC]
RewriteRule ^(.*)$ http://www.newsite.ru/$1 [R=301,L]

Если ваш домен находится в зоне РФ

RewriteCond %{HTTP_HOST} ^xn-…\.xn--p1ai$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Переадресация на папки со слешем в конце /

Иногда на сайтах встречаются дубли страниц вида http://www.site.ru/prodvizhenie-saytov/ и http://www.site.ru/prodvizhenie-saytov

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Перенаправление с индексной страницы php (index.php) на саму папку (корень)

Иногда у сайтов может появляться «технический мусор» из-за особенностей админки или каких-либо других причин. Например, главная страница сайта бывает часто доступна по адресу вида http://www.site.ru/index.php и может присутствовать в индексе поисковых систем, мешая ранжированию главной страницы в поисковой выдаче.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]

Для всех индексных страниц на сайте:

RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]

301 редирект с поддомена на основной домен

RewriteCond %{HTTP_HOST} ^test.site.ru$ [NC]

RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} [R=301,NC,L,QSA]

seognom.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *