Как настроить редирект с поддомена

Как настроить редирект с поддомена

Идея, разработка и дизайн:
Андрей Третьяков (aka inscriptor)


[+ сборник моих стихов прошлых лет ]
и
Creative Force
2009–.
▪
Поделитесь с другом короткой ссылкой
на «Creounity Машину Времени»:
creounity.com/tm
▪
Благодарности +
вехи развития проекта

▪
▪
—> Полезные интернет-ресурсы
в области нумизматики

▪
Данное веб-приложение
работает на PHP-движке
Alcutima Plus v2.6.11
rev. 2020_12_18
(араб. القوطيما )
▪
▪
—> Количество стран, в которых
пользуются веб-приложением
«Creounity Машина Времени»:
213
(по данным Google Analytics)
▪
Друзья! Слово «Creounity»
в русской транскрипции звучит
не «креонити», а «креою́нити»
(образовано от англ.
« creative »
[творческий, созидательный] и
« unity »
[единение, сплочённость]).
—> ▪
Частичная или полная перепечатка текстового и графического содержимого этого веб-сервиса запрещена без письменного разрешения автора и указания активной индексируемой обратной ссылки!
▪
Информация
о государственной регистрации

(показать/скрыть).

Авторами получено государственное свидетельство
о регистрации объекта интеллектуальной собственности.

Данное веб-приложение зарегистрировано в Реестре авторских произведений Российской Федерации.

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

Теги этой статьи: 301 редирект, редирект с поддомена на домен, инструкция, .htaccess, веб-разработка

На днях изменилась система формирования адресов Creounity Машины Времени. Так, «apps» больше не используется как название поддомена. Вместо адреса http://apps.creounity.com/time_machine/
теперь используется следующий: http://creounity.com/apps/time_machine/.

Все файлы остались на своих местах, изменился лишь способ адресации. Было 2 возможных способа сделать редирект (перенаправление) со старых адресов на новый: либо через PHP в индексном файле Creounity Машины Времени, либо через файл .htaccess. При этом поисковые системы по старому адресу теперь получают 301 редирект (Moved Permanently), т.е. они понимают, что содержимое по старому адресу было перенесено навсегда.

Для размещения собственного коммутационного и серверного оборудования на удалённой площадке обращайтесь в msm.ru — узнайте цены на услуги colocation.

1. 301 редирект с поддомена на домен с помощью .htaccess может быть реализован следующим способом:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond % ^www\.subdomain\.site\.com [OR]
RewriteCond % ^subdomain\.site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [L,R=301]

Применительно к моему проекту и структуре каталогов в нём, вышеперечисленные инструкции необходимо поместить в .htaccess, располагающийся на корне папки «apps/», а не в .htaccess на корне сайта.

В противном случае (если разместить инструкции в .htaccess на корне сайта) редирект будет срабатывать некорректно и приводить пользователя вашего сайта к ссылке «http://creounity.com/apps/apps/time_machine/». Это произойдёт из-за RewriteBase и того, что htaccess с редиректом находится выше, чем «/apps/». Когда пользователь откроет ссылку старого образца, то запрос придёт в «apps.creounity.com», при этом .htaccess находится на один уровень выше текущей папки. В нём прописан «RewriteBase /». Так как относительно RewriteBase мы находимся в папке «/apps/», то в RewriteRule попадает не просто «time_machine/», а «apps/time_machine/». Таким образом:

Читайте также:  Не могу настроить msconfig

RewriteEngine On
RewriteBase /

# Запрос: http://apps.creounity.com/time_machine/
# Относительно .htaccess с RewriteBase / мы находимся в папке apps/,
# значит, в RewriteRule попадает ‘apps/time_machine/’

RewriteCond % ^www\.apps\.creounity\.com [OR]
RewriteCond % ^apps\.creounity\.com

# На входе ‘apps/time_machine’, значит, $1 = ‘apps/time_machine’,
# значит http://creounity.com/apps/$1 = http://creounity.com/apps/apps/time_machine/

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

Можно проверить, что в строке, которую смотрит RewriteRule, есть «apps/». Если указать:

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

то правило тоже сработает.

2. В моём случае 301 редирект с поддомена на домен с помощью инструкций в индексном PHP был сделан таким образом:

if ($_SERVER[‘HTTP_HOST’]==»subdomain.site.com») <
header(‘HTTP/1.1 301 Moved Permanently’);
header(«Location: http://site.com/subdomain».$_SERVER[‘REQUEST_URI’]);
>

Так всё же как лучше сделать 301 редирект с поддомена на домен? Вот какой комментарий я получил на этот счёт:

«Технически .htaccess и перенаправление в index.php делают одно и то же — возвращают статус 301 и заголовок Location: с нужной ссылкой. Так что поисковикам всё равно.

.htaccess будет тратить немного меньше ресурсов, так как не нужно запускать php, но это очень незначительная разница.

С точки зрения порядка лично я размещаю редиректы в .htaccess. Если они лежат в коде приложения, их сложнее найти, если нужно разобраться, почему происходит редирект. Но тоже незначительно.

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

Олег Петрачёв, он же хабраюзер cronfy

Таким образом, оба описанных способа являются практически равноценными.

Источник

Типовые перенаправления

Перенаправление (также используются названия редирект, переадресация, форвардинг) — это способ сделать один и тот же документ доступным с других адресов.

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

Чтобы ссылка на одну страницу перенаправляла на открытие другой, добавьте в файл .htaccess следующую строку:

В предложенном варианте:

  • Redirect 301 — инструкция, сообщающая, что страница перемещена постоянно;
  • http://example.com/index.html — адрес страницы, на которую происходит перенаправление.

При использовании 301 редиректа рейтинг сайта в поисковых системах сохраняется.

Аналогичный синтаксис простого редиректа в другом примере:

Перенаправление с использованием mod_rewrite

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

В примере ниже выполняется редирект с www.old-domain.ru на www.new-domain.ru:

RewriteCond задает условие, при котором происходит выполнение правила, указанного в RewriteRule. Таким образом, при запросе любой страницы www.old-domain.ru или old-domain.ru будет осуществлен переход на адрес www.new-domain.ru.

Перенаправление домена без www на домен с www

Данное перенаправление также может быть выполнено двумя способами. В примерах осуществляется редирект с forum.example.ru на www.forum.example.ru.

Способ 2 (в данном способе нет необходимости указания домена).

Источник

Как сделать 301-редирект в файле .htaccess? Примеры и правила настройки

Код состояния HTTP 301 или Moved Permanently («Перемещено навсегда») — стандартный код ответа сервера, который может быть получен, если запрошенный URL-адрес сайта был навсегда перенесен в новое месторасположение.

Введение. Правила приведены для сервера Apache. В правилах: % — обозначает фрагмент URL-адреса после знака вопроса (задания значений CGI-параметров). Срабатывание того или иного правила для редиректа определяется тем, попадает URL-адрес страницы под это правило или нет. О значении тех или иных обозначений (^, $, NC и т.д.) см. памятку в конце страницы.

Читайте также:  Как настроит видеозвонок вконтакте

Проверка кода ответа. Быстрая и бесплатная проверка кодов ответа для списка URL в режиме онлайн реализована в рамках комплекса инструментов «Пиксель Тулс», предусмотрено удобное цветовое кодирование и загрузка URL файлом.

Анализ проведён с помощью инструментов в сервисе Пиксель Тулс.

Ниже даны наиболее используемые правила настройки файла .htaccess для 301-редиректа. Лучше размещать все правила после двух строк:

Options +FollowSymLinks
RewriteEngine On

# Текстовый комментарий, данная строчка не будет обрабатываться.

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

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

RewriteCond % ^80$ [OR]
RewriteCond % =on
RewriteRule ^(.*)$ https://pixelplus.ru/$1 [R=301,L]

Redirect 301 /was.php http://www.site.ru/new.php

При этом, новый адрес указывать необходимо полностью с http и доменным именем.

RewriteRule ^dir /dir-new/$1 [R=301,L]

Скажем, адрес страницы имеет вид: http://www.site.ru/dir/index.php?IBLOCK_ID=1&SECTION_ID=111 тогда для настройки 301 переадресации на новый адрес, необходимо использовать следующее правило:

RewriteCond % ^IBLOCK_ID=1&SECTION_ID=111$ [NC]
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

Если один (или несколько) из GET параметров не задан(ы) или может иметь произвольное значение (в нашем примере это SECTION_ID), можно использовать следующий код:

RewriteCond % ^IBLOCK_ID=1&SECTION_ID=(.*)$ [NC]
RewriteRule ^dir/index\.php$ /new/sef/? [R=301,L]

Если адрес имеет следующий вид: http://www.site.ru/?abc то для перенаправления подойдет последовательность строчек:

RewriteCond % ^abc$ [NC]
RewriteRule ^$ /? [R=301,L]

Если требуется настроить переадресацию только для адреса http://www.site.ru/dir/, но при этом чтобы страница http://www.site.ru/dir/index.php?IBLOCK_ID=1 открывалась по старому адресу, необходимо использовать спецсимвол $ в правиле.

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

Для доменов в зоне РФ действуют все те же правила, но только все кириллические символы необходимо заменить на альтернативный код (он на латинице). В частности, сама зона .рф преобразуется в .xn--p1ai.

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

И для домена в зоне РФ:

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

RewriteCond % ^si-te\.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/si-te/ [R=301,L]

RewriteRule ^bitrix/ /bitrix/admin/ [L,R=301]
RewriteRule ^(.*)$ http://www.newsite.ru/new/ [L,R=301]

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]

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

RewriteRule ^img/(.+)\.jpg$ http://img.domain.ru/$1.jpg [R=301,L]

Указывается порядок загрузки типов индексного файла, лежащих в корне каталога.

DirectoryIndex index.html index.php index.htm index.shtml

RewriteCond % ^[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]

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

RewriteRule [^abc]/unique-file.html /unique-file.html [R=301,L]

Код позволяет поставить 301-редирект со всех папок вида http://site.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Бывает полезен при переделке сайта и изменении ссылок.

RewriteRule ^testovyi/test/?$ /studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]

Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/

Позволяет устранить наличие дублей URL с HTTPS в индексе поисковых систем.

RewriteCond % ^80$ [OR]
RewriteCond % =on
RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]

RewriteCond % ref-spam-site.ru [NC,OR]
RewriteCond % another-ref-spam.ru [NC]
RewriteRule .* — [F]

Настройка позволяет отклонить спамный реферальный трафик с ряда ресурсов по заголовку HTTP_REFERER.

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

Читайте также:  Водяное колесо immersive engineering не работает

ErrorDocument 404 /404-for-me.php

! Все правила выполняются в прямом порядке их следования в файле .htaccess и правило, написанное позже, и будет выполняться позже.

! Для сайтов, на которых используется не сервер Apache, аналогичные 301-редиректы легко настраиваются с помощью PHP.

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

RewriteCond % (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada|windows\ phone) [NC]
RewriteRule (.*) http://mobile.site.ru/ [L,R=301]

RewriteCond % !(accoona|ia_archiver|antabot|ask\ jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC]
RewriteRule (.*) http://no-search.site.ru/ [L,R=301]

Переадресация с www.site.ru/component/content/?view=featured на www.site.ru/
RewriteCond % ^view=featured$ [NC]
RewriteRule ^component/content/$ /? [R=301,L]

Переадресация с www.site.ru/index.php?idc=4&marea=6 на www.site.ru/
RewriteCond % ^idc=4&marea=6$ [NC]
RewriteRule ^index\.php$ /? [R=301,L]

. — Точка заменяет произвольный символ.
[abc] — обозначает перечень символов, совпадающих с буквами a, b, или с.
[^abc] — перечень символов, которые не входят в указанных диапазон. Совпадёт с любым символом, кроме a, b, или с.
* — означает, что предшествующий символ может повторяться (0 или более раз).
[abc]* — команда найдёт идущие подряд символы из заданного набора.
[^abc]* — с точностью до наоборот.

.* — заменяет абсолютно любой набор символов. «.*» — найдёт все подстроки между кавычками.
^ — начало строки (в том случае, если используется в начале выражения).
$ — обозначает конец строки.

\w — буква, цифра или подчёркивание _.
\d — заменяет любую цифру.
\D — заменяет любой символ, но не цифру.
7 — заменяет любую цифру.
[a-z] — любая буква от a до z (весь латинский набор символов) в нижнем регистре.
[A-Z] — любая буква от A до Z в ВЕРХНЕМ регистре.
[a-zA-Z] — любая буква от a до Z в любом регистре.
[a-Z] — то же самое.

RewriteRule (.*) $1? [R=301,L]
Располагать после: RewriteBase /

Памятка по используемым символам и обозначениям

Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.

Спецсимволы, используемые в правилах и их значения.

  • ^ — спецсимвол начала строки;
  • $ — спецсимвол конца строки;
  • ! — спецсимвол отрицания;
  • . — точка, заменяет любой символ, но только один;
  • () — группировка;
  • \ — «экранирующий» слеш, следующий символ после него считается обычным, а не спецсимволом;
  • # — начало текстового комментария в файле.

Модификаторы используются после обычных, спецсимволов или их групп и позволяют расширить возможности шаблонов для срабатывания правил.

  • ? — символ повторяется 0 или 1 раз.
  • + — повторяется от 1 до 65536 раз.
  • * — повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].

  • NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
  • R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
  • L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.

Источник

Оцените статью