Настройка временного и постоянного редиректа в Apache
25 января, 2017 12:24 пп 21 057 views | Комментариев нетLinux, VPS | Amber | Комментировать запись
HTTP-перенаправление (или редирект) – это способ направить один домен или адрес на другой. Существует несколько видов перенаправления, каждый из которых по-разному воспринимается клиентским браузером. Самые распространённые виды – это временный и постоянный редирект.
Временный редирект используется в случае если контент, доступный по одному URL-адресу, нужно временно обслуживать из другого каталога. К примеру, если сайт находится на обслуживании, вы можете перенаправить запросы к домену на пользовательскую страницу ошибок, где посетители смогут узнать, когда сайт будет доступен.
Постоянный редирект сообщает браузеру о том, что старый адрес больше не доступен, а контент обслуживается по другой ссылке.
Чтобы создать временный редирект в Apache, добавьте в виртуальный хост такую строку:
Redirect /oldlocation http://www.newdomain.com/newlocation
Чтобы настроить постоянный редирект, добавьте в файл виртуального хоста:
Redirect permanent /oldlocation http://www.newdomain.com/newlocation
В руководстве вы найдёте более подробное описание настройки каждого вида перенаправления и несколько полезных примеров.
Требования
- Настроенный сервер.
- Установленный веб-сервер Apache 2.
- Виртуальный хост (эти руководства помогут создать виртуальный хост в Ubuntu 16.04, CentOS 7 и Debian 7).
Простая настройка редиректа
Чтобы настроить простой редирект одной страницы в Apache, можно использовать директиву Redirect, которая входит в модуль mod_alias. Модуль включен в Apache по умолчанию. Директиве нужно иметь минимум два аргумента: старый URL-адрес и новый URL-адрес. С её помощью можно настроить как временное, так и постоянное перенаправление.
Чтобы настроить простое временное перенаправление, добавьте следующие строки в конфигурации сервера:
<VirtualHost *:80>
ServerName www.domain1.com
Redirect / http://www.domain2.com
</VirtualHost>
ServerName www.domain2.com
. . .
</VirtualHost>
Теперь браузер будет направлять все запросы к www.domain1.com на домен www.domain2.com. Однако такое решение работает только с одностраничными сайтами.
Редирект объемных сайтов настраивается иначе. Для этого используется директива RedirectMatch, которая с помощью регулярных выражений может указывать целый каталог вместо одного файла.
Читайте также: Использование Grep и регулярных выражений для поиска текстовых шаблонов в Linux
Директива RedirectMatch выполняет поиск по шаблонам регулярных выражений в круглых скобках, а затем ссылается на найденный текст как на целевой каталог переадресации с помощью выражения $1 (где 1 – первая группа найденного текста).
Более гибкую настройку редиректа предоставляет модуль mod_rewrite, но его использование выходит за рамки данного руководства.
Читайте также: Настройка mod_rewrite на веб-сервере Apache в Ubuntu 14.04
Пример 1: переход на другой домен
Предположим, у вас есть сайт, который пользуется популярностью, но в какой-то момент у вас возникла необходимость сменить его домен. Конечно, вы не можете просто переместить контент на новый домен, а старый забросить: так вы потеряете своих посетителей. Кроме того, ссылки на ваш сайт, расположенные на других сайтах, перестанут работать, если вы просто перенесёте контент на новый домен и не оставите никакой информации о его новом местонахождении. Все это приведёт к снижению трафика. Как переместить контент сайта на новый домен и не потерять аудиторию?
В таком случае нужно настроить редирект со старого домена (например, domain1.com) на новый (domain2.com). Чтобы навсегда сменить доменное имя сайта, используйте постоянный редирект. Благодаря этому браузер сможет перенаправлять поступающий трафик на новый домен.
Итак, предположим, что на данный момент сайт обслуживается по домену domain1.com, а его виртуальный хост находится в /etc/apache2/sites-available/domain1.com.conf:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /var/www/domain1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Виртуальный хост для нового домена сайта, /etc/apache2/sites-available/domain2.com.conf, должен выглядеть так:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName domain2.com
ServerAlias www.domain2.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Теперь измените настройки виртуального хоста domain1. /(.*)$ совпадает с любым текстом, идущим в URL-адресе после /. Таким образом, http://domain1.com/index.html будет перенаправляться на http://domain2.com/index.html.
Чтобы настроить постоянный редирект, нужно просто добавить опцию permanent в директиву RedirectMatch.
Примечание: После изменения виртуального хоста нужно перезапустить Apache, чтобы обновить настройки:
systemctl restart apache2
Пример 2: перенаправление страницы
В некоторых ситуациях возникает необходимость изменить название уже опубликованной страницы. Если вы просто измените название (без настройки редиректа), при запросе исходного URL-адреса страницы будет возникать ошибка 404 Not Found. Тогда пользователь, который добавил эту страницу в закладки, не сможет найти её, поскольку он использует устаревшую ссылку. Редирект позволяет устранить эту проблему.
Предположим, на вашем сайте есть две отдельные страницы для товаров и услуг, products.html и services. html соответственно, и вы решили объединить эти страницы в одну, offers.html. Чтобы не потерять трафик, нужно настроить редирект products.html и services.html на offers.html.
К примеру, исходный виртуальный хост сайта выглядит так:
<VirtualHost *:80>
ServerName example.com
. . .
</VirtualHost>
Чтобы перенаправить эти две страницы на новую страницу, достаточно добавить в файл две директивы Redirect:
<VirtualHost *:80>
ServerName example.com
Redirect permanent /products.html /offer.html
Redirect permanent /services.html /offer.html
. . .
</VirtualHost>
Директива Redirect принимает исходный адрес страницы, которую нужно перенаправить, а затем адрес новой страницы. Опция permanent обеспечит постоянный редирект. Вы можете использовать неограниченное количество директив Redirect в виртуальном хосте, чтобы перенаправить трафик на новые страницы сайта.
Заключение
Теперь вы умеете перенаправлять запросы пользователей. При настройке перенаправления будьте внимательны: неправильное использование временных редиректов может повредить ваш поисковый рейтинг.
Редирект HTTP применяется также для обеспечения SSL-шифрования трафика (редирект http на https) и добавления префикса www к домену сайта.
Читайте также:
- Документация Apache для mod_aliasи mod_rewrite
- Настройка временного и постоянного перенаправления Apache и Nginx
- Редирект домена с www на без www на Apache в CentOS 7
- Редирект домена с www на без www на Apache в Ubuntu 14.04
Что такое редирект? Как сделать редирект в htaccess? Полный список
Все большее количество людей начинает спрашивать, что такое редирект (redirect) и что он делает. Именно это и стало причиной написания статьи. Надеюсь, что ознакомившись с ней, далекие от программирования люди, получат ответ на искомый вопрос, а начинающие веб-программисты смогут почерпнуть для себя что-то новое.
Зачем используется редирект?
По сути, редирект – это перенаправление посетителей с искомой страницы. Когда это используется? Вариантов более чем достаточно. К использованию редиректа частенько прибегают после смены названия сайта. Допустим, вы администратор сайта https://www.roga-i-kopita.com/. Так получилось, что вам пришлось поменять адрес сайта на новый — https://zveri.com/.
Многие могут удивиться, дескать, зачем вообще нужен редирект? Есть же паркинг домена, да и можно вовсе используя cpanel просто дописать новое имя, что в этом сложного. Однако не все так просто. Само собой, в описанных выше случаях, набирая в адресной строке адрес первого сайта, браузер вам его и покажет. Но есть существенная разница, в паркинге под доменами используемых адресов сайтов, подразумевается изначальный адрес. А в случае редиректа произойдет перенаправление на другой сайт с полным изменением URL в строке браузера.
Кроме этого редирект можно задействовать для переадресации с одной страницы на другую страницу, к примеру с
https://oldsite. com/
на
https://www.oldsite.com/
Также редирект служит для добавления слэша (косая черта). Например, с
https://evorate.ru/blog/seo-blog/redirekt
делается перенаправление на другой адрес —
https://evorate.ru/blog/seo-blog/redirekt/
Не стоит забывать про любителей «халявы». Есть такое определение «склейка» доменов. Для этого всего-то нужно получить неплохой ТИЦ и PR. Покупатель обязательно найдется, среди неопытных Web-дизайнеров частенько встречаются люди, в силу своей неопытности покупающие подобные подделки.
Как сделать редирект?
Способов сделать перенаправление с одной страницы на другую – огромное количество. Описывать их всех попросту не имеет смысла, поэтому давайте разберем несколько наиболее популярных и часто используемых.
.htaccess редирект:
Для редиректа нужно просто поместить файл .htaccess в папку с которой нужен редирект.
301 редирект с одной страницы на другую. Самый простой вариант:Redirect 301 /test-1/ https://site. (.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
С помощью данного метода можно проводить и сложные переадресации, в таком случае этот метод полностью идентичен с header-редиректом (указывается внешний URL).
javascript — редирект:
Отличительная черта данного способа в том, что браузер сначала загружает страницу HTML – и лишь затем происходит перенаправление на нужный адрес сайта. В случае использования данного способа может появиться некоторая задержка, поскольку нужно дождаться пока прогрузится HTML, это считается небольшим, но минусом данного способа. Кроме этого, переадресация не сработает, если на ПК не установлен javascript, т.к. HTML страница не будет грузиться.
Вот примерное оформление файла:
<script type="text/javascript"> document.location = '//evorate.ru/'; </script>
В данном случае нужно учитывать, что если на странице (page) есть код «Яндекс.Метрики» — он попросту не успеет засчитать пользователя, поскольку данный редирект работает быстрее метрики.
Не забывайте, что перенаправление делается не только для интернет-пользователей, но и для поисковых роботов, которые составляют рейтинг сайтов в поисковиках. Надеюсь, статья была вам полезной.
Сколько способов перенаправить пользователя в приложении next.js? | by Радждип Сингх | FrontEnd web
Сколько способов перенаправить пользователя в приложении next.js?Nextjs
Разберитесь с методами перенаправления в nextjs на простых примерах.
Опубликовано в·
2 мин чтения·
28 июня 2022 г.В nextjs есть три способа перенаправить пользователя на другие страницы или маршрутизаторы.
- useRouter Hook
- config.next.js
- Промежуточное ПО
Хук useRouter — это встроенный хук от nextjs. С помощью хука useRouter вы перенаправляете базу пользователей по логике. Хук useRouter работает внутри функционального компонента.
Пример из жизни
Перенаправить пользователя после успешного входа в панель управления или на домашнюю страницу.
импортировать стили из '../../styles/Home.module.css'import {useRouter} из 'next/router'экспортировать функцию по умолчанию Home() {let router= useRouter()
// базовое условие перенаправления
function redirect() { router.push('/about')}return (< h2 className={styles.title}>Пример перенаправления)}
Вы также можете перенаправить пользователя с помощью файла config.next.js. Но это фиксированный редирект. Вы никогда не меняетесь на основе логики.
Если вы объедините config.next.js и хук useRouter, вы столкнетесь с ошибкой. Для получения подробной информации проверьте демо-код.
Пример из жизни
Старый путь: https://officialrajdeepsingh. dev/about/
Новый путь: https://officialrajdeepsingh.dev/pages/about/
При изменении пути к статьям или страницы на веб-сайте, перенаправьте старого пользователя на новый путь.
/** @type {import ('next').0030 Пункт назначения: '/', Permanent: True, }, ] }, } Module.Exports = NextConfig
В промежутке вы можете перенаправить базу пользователя на условиях. Вызов ПО промежуточного слоя перед выполнением запроса завершен.
Пример из реальной жизни
перенаправить базу пользователей на геологическое местоположение или перенаправить базу пользователей на мобильных и настольных компьютерах.
импорт { NextResponse } из промежуточного программного обеспечения функции экспорта «следующий / сервер» (запрос) {
if ( request.geo.city === undefined ) {return NextResponse.rewrite(новый URL('/page', request.url))} else if (request.