Редирект на PHP & JS & .htaccess

Последнее обновление: 10 апреля, 2021

redirect

Содержание

  1. Коды ошибок
  2. Синтаксис и примеры при использовании php
  3. Синтаксис и примеры при использовании js
  4. Синтаксис и примеры при использовании .htaccess

Коды ошибок

3xx: Redirection (перенаправление):

  • 300 Multiple Choices («множество выборов»);
  • 301 Moved Permanently («перемещено навсегда»);
  • 302 Moved Temporarily («перемещено временно»);
  • 302 Found («найдено»);
  • 303 See Other («смотреть другое»);
  • 304 Not Modified («не изменялось»);
  • 305 Use Proxy («использовать прокси»);
  • 306 — зарезервировано (код использовался только в ранних спецификациях);
  • 307 Temporary Redirect («временное перенаправление»);
  • 308 Permanent Redirect («постоянное перенаправление»).

Синтаксис и примеры при использовании php

Безусловная переадресация на PHP

<?php header( 'Location: http://site.ru/', true, 307 ); ?>

Переадресация PHP для пользователя с определенным IP-адресом

  1. Условие IF.
  2. Обращение к серверу для получения текущего IP-адреса пользователя (SERVER REMOTE ADDR).
  3. Сравнение полученного значения с значением, заданным нами.
  4. Временный (307) редирект в том случае, если значения не совпали («!==») или напротив совпали («==»).

Использование:

  • Простой вариант режима обслуживания (maintenance mode), при котором Вы будете продолжать получать доступ к странице, в то время как другие пользователи будут перенаправлены на другую информацию.
  • Простой вариант защиты от человека, который решил засыпать Вас спамом или прописать инъекцию  и действует с небольшого количества IP-адресов.
<?php
if ( $_SERVER['REMOTE_ADDR'] !== '192.168.0.0' ) {
    header( 'Location: http://site.ru/', true, 307 );
}
?>

Синтаксис и примеры при использовании js

Безусловная переадрасация на JS

<script type="text/javascript">
    document.location.href = 'http://site.com/'
</script>

Переадресация на SSL на JS

JS: проверка на каком протоколе загрузилась страница и редирект на ssl

<script type="text/javascript">
if (window.location.protocol === 'http:') {
    document.location.href = 'http://site.com/'
}
</script>

Переадресация на JS в зависимости от ширины экрана

Если ширина меньше 900px переходим на мобильную версию:

<script language="JavaScript" type="text/javascript"> 
if(screen.width < 900) document.location = 'https://sapid.info/mobile/';
</script>

Если ширина больше или равна 900px переходим на основную версию:

<script language="JavaScript" type="text/javascript"> 
if(screen.width >= 900) document.location = 'https://sapid.info/';
</script>

Синтаксис и примеры при использовании .htaccess

Пример редиректа на HTTPS (SSL) в WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Подмена ссылок на файлы с ошибками

Еще вариант настроить переадресацию с несуществующих страниц сайта ( и при других ошибках ) — переопределить страницу сообщения об ошибке.

Важно помнить, что если писать относительный адрес, а не как в примере ниже — то система будет искать файлы в корне сервера, а (вероятно) они лежат не в корневой папке сервера:

ErrorDocument 400 https://site.domain/error.php?err=400
ErrorDocument 401 https://site.domain/error.php?err=401
ErrorDocument 402 https://site.domain/error.php?err=402
ErrorDocument 403 https://site.domain/error.php?err=403
ErrorDocument 404 https://site.domain/error.php?err=404
ErrorDocument 500 https://site.domain/error.php?err=500
ErrorDocument 502 https://site.domain/error.php?err=502