Как сделать редирект URL-адреса
Хотите перенаправить URL-адрес из одного места в другое? В этом простом руководстве мы покажем, как можно это сделать с помощью Apache / .htaccess, PHP, JavaScript, HTML и т. д. Каждый метод редиректа HTML мы кратко поясним и продемонстрируем готовые к использованию примеры.
- Как сделать редирект URL-адресов с помощью PHP
- Как сделать редирект URL-адресов с помощью JavaScript
- Как сделать редирект URL-адресов с помощью HTML
- Как сделать редирект URL-адресов с помощью Perl
- Как сделать редирект URL-адресов с помощью ASP (VB Script)
- Как сделать редирект URL-адресов с помощью mod_alias Apache
- Как сделать редирект URL-адресов с помощью mod_rewrite Apache
- Как сделать редирект ошибки 404 с помощью Apache
Как сделать редирект URL-адресов с помощью PHP
Редирект с помощью PHP выполняется с помощью функции header(), например:
<?php
header('location: http://example.com/');
exit;
?>
Эта функция должна быть вызвана в начале веб-страницы до вывода HTML-кода. Чтобы узнать больше о настройке этого метода, ознакомьтесь с документацией PHP.
Чтобы выполнить редирект с помощью PHP через определенное время:
<?php
header('Refresh:5; URL=http://example.com/');
exit;
?>
Редирект на example.com выполняется через 5 секунд. Вы можете изменить это значение на необходимое.
Как сделать редирект URL-адресов с помощью JavaScript
Вот самый простой способ index html редиректа с помощью JavaScript:
<script>
document.location.href = 'http://example.com/';
</script>
Как сделать редирект URL-адресов с помощью HTML
Можно перенаправить пользователя на новый URL-адрес, используя старый добрый HTML. Вот пример:
<meta http-equiv="refresh" content="10; url=http://example.com/" />
Это называется meta-refresh редирект. Можно задать время (в секундах), изменив 10 на необходимое число. Обратите внимание, что этим методом редиректа часто злоупотребляют спамеры. Поэтому будьте осторожны, если вы реализуете его на общедоступном сайте.
В таких случаях рекомендуется задать интервал редиректа более 8 секунд, чтобы предотвратить любые возможные наказания от поисковых систем.
Как сделать редирект URL-адресов с помощью Perl
Вот два способа редиректа URL-адресов с помощью Perl:
#!/usr/bin/perl
print "Location: http://example.comnn";
exit;
Как сделать редирект URL-адресов с помощью ASP (VB Script)
Чтобы перенаправить URL-адрес с помощью ASP, добавьте следующий код:
<%@ Language=VBScript %>
<% response.status="301 moved permanently" Response.AddHeader "Location", "http://example.com" %>
Как сделать редирект URL-адресов с помощью mod_alias Apache
Самый простой способ перенаправления на серверах Apache:
Redirect 301 /old-location.html http://example.com/new-location/
Перед тем, как сделать редирект HTML, этот код нужно добавить в файл .htaccess или файл конфигурации сервера Apache. Вот синтаксис этого метода:
[Директива] [Код состояния] [Старый URL] [Новый URL]
При необходимости можно изменить любой из этих параметров. Например, если нужно подставлять старый URL-адрес динамически, чтобы перенаправить все следующие URL-адреса:
http://example.com/old-directory/file-01.html
http://example.com/old-directory/file-02.html
http://example.com/old-directory/file-03.html
.
.
.
Можно использовать RedirectMatch вместо Redirect:
RedirectMatch 301 /old-directory/file-(.*).html http://example.com/new-directory/file-$1.html
Также можно изменить код статуса с 301 (постоянный редирект) на 302 (временный редирект). Или на любой другой действительный код состояния. Ниже приведено руководство по регулярным выражениям, используемым в методе RedirectMatch:
- (.*) - соответствует любому символу (или отсутствию символа);
- . - буквально соответствует точке;
- $1 - возвращает шаблон, сопоставляемый первым (.*).
Как сделать редирект URL-адресов с помощью mod_rewrite Apache
Более функциональный способ редиректа с помощью Apache - использовать его переписывающий модуль mod_rewrite. Вот несколько примеров, которые можно добавить в .htaccess или в файл конфигурации Apache.
Пример 1: Редирект с www на без www
Этот код редиректа HTML перенаправляет все www-версии URL-адресов на их эквивалентные версии без www.
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
RewriteRule (.*) http://example.com/$1 [R=301,L]
</IfModule>
Это называется канонизацией. Вот несколько примечаний о регулярном выражении, используемом в этом примере:
- ^ - обозначает начало запрошенного URI;
- . - буквально соответствует точке;
- $ - обозначает конец запрошенного URI;
- [NC] - делает шаблон нечувствительным к регистру;
- (.*) - соответствует любому символу (или отсутствию символов);
- $1 - соответствует шаблону из круглых скобок (.*) в RewriteRule;
- [R=301,L] - отправляет код состояния 301 и инструктирует Apache прекратить обработку набора правил.
Пример 2: Редирект всего домена
Чтобы осуществить редирект HTML с текущего домена на новый:
<IfModule mod_rewrite.c>
RewriteRule ^/(.*) https://new-domain.tld/$1 [R=301,L]
</IfModule>
Аналогично можно перенаправить запросы из поддомена текущего сайта на поддомен на новом сайте:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} (.*).old-domain.tld [NC]
RewriteRule ^/(.*) https://%1.new-domain.tld/$1 [R=301,L]
</IfModule>
Вот несколько примечаний о регулярном выражении, используемом в этом примере:
- ^ - обозначает начало запрошенного URI;
- (.*) - соответствует любому символу (или отсутствию символов);
- $1 - соответствует шаблону из круглых скобок (.*) в RewriteRule;
- %1 - соответствует первому шаблону из круглых скобок (.*) в RewriteCond
- [R=301,L] - отправляет код состояния 301 и инструктирует Apache прекратить обработку набора правил.
Обратите внимание: чтобы любой из этих методов работал корректно, оба домена должны иметь одинаковую структуру файлов. Папки и ресурсы на текущем домене также должны существовать и на новом домене. В противном случае вы получите на новом домене кучу ошибок 404.
Пример 3: Перенаправление всех файлов HTML и PHP
Вот еще один, более сложный пример скрипта редиректа HTML mod_rewrite:
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} ^/old-directory/(.*).(html|php)$ [NC]
RewriteRule (.*) http://example.com/new-directory/%1.%2 [R=301,L]
</IfModule>
Мы перенаправляем все запросы к любым файлам HTML или PHP, расположенным в папке /old-directory/. Все соответствующие запросы перенаправляются в тот же файл, который находится в /new-directory/. Вот несколько примечаний о регулярном выражении, используемом в этом примере:
- ^ - обозначает начало запрошенного URI;
- (.*) - соответствует любому символу (или отсутствию символов);
- . - буквально соответствует точке;
- (html php) - соответствует либо html, либо php;
- [NC] - делает шаблон нечувствительным к регистру;
- %1 - соответствует первому шаблону из круглых скобок (. *) в RewriteCond;
- %2 - соответствует второму шаблону из круглых скобок (html|php) в RewriteCond;
- [R=301,L] - отправляет код состояния 301 и инструктирует Apache прекратить обработку набора правил.
Как сделать редирект ошибки 404 с помощью Apache
Вот удобный код редиректа html HTML всех ошибок 404 «Not Found» на определенный URL.
ErrorDocument 404 http://example.com/wherever/
Просто измените URL-адрес на нужный и добавьте код в файл .htaccess в корневой папке вашего сайта или добавьте его в файл конфигурации Apache.