Как сделать редирект? 6 способов редиректа
Содержание:
- Что такое редирект и когда он нужен
- Как настроить 301 редирект
- Переадресация с http на https
- Редирект с протокола http на https.
- Настройка кириллических доменов .РФ
- 301 редирект с одного домена на другой
- Редирект на папки со слешем на конце
- Редирект на папку без слеша — убираем слеш на конце
- Редирект со всех страниц кроме определенной папки
- Редирект с index.php на корень сайта
- Переадресация с поддомена на основной домен
- Редирект страницы из различных директорий
- Создаем ЧПУ-копию динамических страниц
- Переадресация с https на http
- Настройка ответа 403 для спама по REFERER
- Обработка ошибки 404 в .htaccess
- HowTo redirect with PHP
- Как же сделать перенаправление всех запросов на index?
- 3.Другие примеры с htaccess
- Примеры 301 редиректов в .htaccess
- 2.1. Редирект с одной страницы на другую
- 2.2. Редирект со всех файлов .htm на .html
- 2.4. Удаление лишних слэшей в адресе URL
- 2.5. Реврайт без редиректа
- 2.6. Простановка замыкающего слеша в конце адреса главной страница
- 2.8. Редирект GET параметров
- 2.9. Редирект на мобильную версию сайта m.site.ru
- 2.10. Редирект с поддомена
- Как сделать редирект?
- Примеры перенаправлений
- PHP Redirect with HTTP Status Code
Что такое редирект и когда он нужен
Неактуальный сайт или страницу программисты называют донором, а ту, на которую перенаправляют, — акцептором. В нашем случае http://nic.ru/ — сайт-донор, а https://nic.ru/ — сайт-акцептор.
В каких случаях нужен редирект
- Для адаптации. Самый популярный редирект — перенаправление пользователя с десктопной версии сайта на мобильную.
- При ренейминге. В случаях, когда вы изменили название бренда и перешли на сайт с новым доменным именем.
- При переходе на безопасный протокол соединения. Чтобы обезопасить себя и своих клиентов, меняете протокол http на https.
- Для перенаправления с неактуальных страниц/сайтов. Например, товара больше нет в продаже или вы больше не оказываете какую-то услугу и хотите перенаправить пользователя на страницу с похожим товаром или услугой.
- При сайтах или страницах-дублях. Схожий контент на нескольких ресурсах ухудшает ранжирование, а если сайты или страницы идентичны, поисковые системы вовсе исключат эти страницы из поиска. Чтобы не создавать дубли и не рисковать ранжированием, настраивают постоянный или временный редирект.
- При частых запросах с www, если ваш сайт без www. На вас могут сослаться и так, и так, но для поисковых систем это разные сайты, поэтому настраиваете редирект на один из вариантов.
- При переходе на новый движок сайта. У каждой CMS свои правила генерации URL. Если адрес не будет совпадать со старым, без редиректа не обойтись — иначе клиенты не смогут вас найти.
Это не все возможные поводы для редиректа. Они возникают в зависимости от того, какие проблемы нужно решить перенаправлением.
Какие бывают редиректы
Есть четыре основных вида редиректа — 301, 302, 303, 307. Поисковые системы сами определяют его по коду состояния http.
301 — постоянный редирект
Он означает, что ресурс навсегда перемещён на новый адрес. Сайт-донор пропадает из поиска, авторитет и показатели посещаемости передаются сайту-акцептору, который и будет индексироваться.
302 — временный редирект со статусом «Найдено»
Поисковые системы расценивают страницу как временно несуществующую и перенаправляют пользователя на нужную. Все настройки и показатели останутся по старому адресу, индексироваться новый сайт тоже не будет. Такое перенаправление пригодится, например, когда нужно будет обновить сайт.
303 и 307 — аналоги 302 редиректа
303 редирект обозначает «смотрите другой ресурс», его применяют, когда вы не перенесли контент на другой адрес, но у вас есть подходящий под перенаправление другой сайт или страница. Для этого редиректа браузер использует метод GET.
Статус 307 редиректа — временное перенаправление. То есть запрашиваемая страница в данный момент находится по другому адресу. В отличие от 302 изначальная версия ресурса сохранит свои позиции.
Вам не обязательно запоминать, какой редирект что обозначает. Эти цифры при настройке вам не пригодятся. Достаточно понимать, какое решение подойдёт именно в вашей ситуации — временное или постоянное — и написать код, подходящий под нужный редирект.
Как настроить 301 редирект
Джон Мюллер предупреждает, что Google может не проиндексировать конечную страницу, если не соблюсти все правила. Нужно использовать канонический тег, внутренние ссылки и при необходимости тег hreflang для конечной страницы, а не той, с которой вы перенаправляете пользователя. Иначе Google получит неправильные сигналы и может не проиндексировать конечную страницу.
Настроить переадресацию можно через панель управления вашим хостингом или вручную средствами HTML, PHP, JavaScript.
В настройках конкретного хостинга обычно подробно описано, как сделать редирект через панель управления. Для разных CMS есть специальные плагины для редиректов. Разберем способы для настройки вручную на примере редиректа на сайт с www или без него.
Редирект для Nginx
Для серверов под Nginx нужно использовать файл nginx.config, добавьте код в секцию server. Если вы настроили виртуальные хосты, для каждого хоста нужно редактировать файлы отдельно.
С домена с www на домен без www
server {#... if($host~ * www\.(.*)) { set $host_without_www $1; rewrite ^ (.*) $ http: //$host_without_www$1 permanent; }#... }
С домена без www на домен с www
server {#... if($host~ * ^ + \. + $) { rewrite ^ (.*) $ $scheme: //www.$host$1 permanent; }#... }
После изменения nginx.config перезапустите nginx с помощью команды «service nginx restart». Проверить, все ли корректно заполнено, можно через команду «nginx -t».
Редирект для Apache
Если вы используете Apache, вам нужен файл .htaccess. Для доступа есть несколько вариантов:
- Используйте FTP и включите отображение скрытых файлов. Найдите .htaccess в каталоге public_html в папке с названием домена.
- Откройте панель управления хостингом, включите отображение скрытых файлов и найдите его через Диспетчер файлов.
Скачайте .htaccess, добавьте код редиректа и загрузите файл заново. Если файла .htaccess нет, его нужно создать.
На домен без www
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^www.site\.ru$ RewriteRule ^(.*)$ <a href="https://site.ru/https://site.ru/$1" class="redactor-autoparser-object">https://site.ru/https://site.ru/$1</a>
На домен с www
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} ^site.ru RewriteRule (.*) <a href="http://www.site.ru/http://www.site.ru/$1" class="redactor-autoparser-object">http://www.site.ru/http://www.site.ru/$1</a>
Редирект через PHP
Действует на уровне сервера. Лучше использовать другой способ, потому что этот работает медленно. Через PHP перенаправление настраивают для сайтов, где редирект нужен на многих, но не на всех страницах.
Файл index.php расположен в корневой папке. Скачайте его и добавьте код или отредактируйте прямо в диспетчере файлов в панели управления хостингом.
На домен без www
<!--?php header("Location: http://site.ru/", true, 301); exit(); ?-->
На домен с www
<!--?php header("Location: http://www.site.ru/", true, 301); exit(); ?-->
Редирект через HTML
Редирект через HTML-код медленнее, он работает на стороне браузера. Код нужно добавить между тегами и страницы, с которой нужно перенаправить. В параметре content=»» указывают задержку по времени.
На домен без www
<meta http-equiv="refresh" content="0; url=http://site.ru/">
На домен с www
<meta http-equiv="refresh" content="0; url=http://www.site.ru/">
Редирект через JavaScript
Редирект настраивают и с помощью JavaScript, он работает на стороне браузера, как и HTML. Это медленный способ и не сработает, если у пользователя в браузере отключен JavaScript. Его обычно настраивают для редиректов с задержкой, если такое требуется.
Код для редиректа нужно добавить между и в код первой исходной страницы.
На домен без www
<script type="text/javascript"> window.location.replace("http://site.ru/"); </script>
Для задержки:
На домен с www
<pre><script> window.location.replace("http://www.site.ru/"); </script></pre>
Через cPanel
cPanel — это платная панель управления веб-хостингом. В ней тоже можно настроить редиректы, причем не используя вводы кодов. Во вкладке «Домены» есть раздел «Перенаправления», там нужно настроить редирект.
На домен без www
- В списке выберите нужный домен.
- В поле «Перенаправляет на» пропишите его с префиксом http://.
- Поставьте отметку у «Перенаправлять только с www»
На домен с www
- В списке выберите нужный домен.
- В поле «Перенаправляет на» пропишите его с префиксом http://www.
-
Поставьте отметку у «Не перенаправлять www»
Переадресация с http на https
При переезде сайта с http на https (установка SSL-сертификата) потребуется код, который не требует дополнительных модификаций:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
Второй метод осуществляет перенос с http://domain.ru на https://domain.ru:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{HTTP_HOST} ^domain\.ru$
RewriteRule ^(.*)$ https://domain.ru/$1
Третий способ выполняет аналогичную функцию, но отключает перенаправление для robots.txt:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule ^(.*)$ https://domain.ru/$1
В 4-й версии конечным пунктом для пользователя станет https://www.domain.ru:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteCond %{HTTP_HOST} ^domain\.ru$
RewriteRule ^(.*)$ https://www.domain.ru/$1
Позволяет сделать форвардинг с http://www.poddomen.domain.ru на https://poddomen.domain.ru:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.poddomen\.domain\.ru$
RewriteRule ^(.*)$ https://poddomen.domain.ru/$1
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
Последняя версия, дающая возможность сделать связь между http://poddomen.domain.ru на https://www.poddomen.domain.ru:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^poddomen\.domain\.ru$
RewriteRule ^(.*)$ https://www.poddomain.domain.ru/$1
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
Редирект с протокола http на https.
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1
Если возникает циклический редирект, то воспользуйтесь этим вариантом:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
Для Битрикс-сайтов на хостинге reg.ru
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI}
Для сертификатов https c Cloudflare:
RewriteCond %{HTTP:CF-Visitor} ‘»scheme»:»http»‘
# Without Cloudflare:
# RewriteCond %{HTTPS} off
RewriteRule ^ https://www.example.com%{REQUEST_URI}
RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
RewriteEngine On
RewriteCond %{ENV:HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}
RewriteEngine on
RewriteCond %{HTTP:HTTPS} !on
RewriteCond %{REQUEST_URI} !robots.txt
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Настройка кириллических доменов .РФ
Правила и логика работы с доменами на кириллице абсолютно такие же, единственным отличием является замена символов кириллицы на специальный код.
301 редирект с одного домена на другой
RewriteCond %{HTTP_HOST} ^oldmysite\.ru$ RewriteRule ^(.*)$ http://newmysite.ru/$1
Правило для доменов .РФ
RewriteCond %{HTTP_HOST} ^xn-...\.xn--p1ai$ RewriteRule ^(.*)$ http://mysite.ru/$1
Редирект на папки со слешем на конце
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..{1,10}$ RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://mysite.ru/$1/
Редирект на папку без слеша — убираем слеш на конце
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ http://www.site.ru/$1
Редирект со всех страниц кроме определенной папки
Для примера возьмем в исключение папку панели администратора в CMS Bitrix
RewriteRule ^bitrix/ /bitrix/admin/ RewriteRule ^(.*)$ http://mysite.ru/
Редирект с index.php на корень сайта
RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://mysite.ru/
Переадресация с поддомена на основной домен
RewriteCond %{HTTP_HOST} ^abc.mysite.ru$ RewriteRule ^(.*)$ http://mysite.ru%{REQUEST_URI}
Редирект страницы из различных директорий
Если в разных папках сайта лежит файл с одинаковым названием, то настроить переадресацию этих файлов на один.
RewriteRule /nash-file.php /nash-file.php
Создаем ЧПУ-копию динамических страниц
Для страницы появится обычный URL без передачи Get-параметров.
RewriteRule ^catalog/okno/?$ /firma/okna/detail.php?ID=123
Переадресация с https на http
Необходимое правило для решения проблемы с дублями страниц в поисковых системах.
RewriteCond %{HTTPS} "on" RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}
Настройка ответа 403 для спама по REFERER
Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:
RewriteCond %{HTTP_REFERER} ref-spam-site.ru RewriteCond %{HTTP_REFERER} another-ref-spam.ru RewriteRule .* -
Обработка ошибки 404 в .htaccess
Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц
ErrorDocument 404 /404-for-me.php
HowTo redirect with PHP
You can easily redirect using following header("Location: ....) syntax:
<?php /* Redirect browser */ header("Location: http://theos.in/"); /* Make sure that code below does not get executed when we redirect. */ exit; ?>
The header() is used to send a raw HTTP/1.1 specification specific header. header() must be called before any actual output is sent, the following example will not work:
<?php $var="something"; echo "Hello world"; echo $var; /**************************************************** * Remember that header() must be called before any actual output is sent, * either by normal HTML tags, blank lines in a file, or from PHP. *****************************************************/ header("Location: http://theos.in/"); exit; ?>
Как же сделать перенаправление всех запросов на index?
Для того чтобы это сделать, мы в корневой папке сайта создаем файл .htaccess. Данный файл необходимо открыть как обычный текстовик или с помощью программы для написания кода. Я открываю этот файл через программу Sublime Text.
ВНИМАНИЕ
Для файла .htaccess следует использовать права доступа 644 и загружать его в ASCII-режиме. Если ваш .htaccess файл не работает, то вам следует обратиться к системному администратору или в техподдержку вашего веб-хостинга и убедиться, что использование его разрешено для вашей учетной записи, так как некоторые хостинговые компании не позволяют его использование без предварительного разрешения, это в основном относится к бесплатным хостингам. Также, к сожалению, .htaccess не будет работать на Windows-серверах.
В файл htaccess вписываем следующий код.
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php
Первая строка кода разрешает внесение изменений в работу сервера.
Вторая и третья строка кода добавляет условие при котором происходит проверка:
- RewriteCond %{REQUEST_FILENAME} !-f – проверка наличия файла с таким названием
- RewriteCond %{REQUEST_FILENAME} !-d – проверка наличие директории с таким названием
Если название файла на который идет запрос указанно верно и такой файл существует, то происходит перенаправление запроса на файл index.php.
3.Другие примеры с htaccess
3.1. Запретить IP-адрес и браузер
Запретим открывать сайт для пользователя с браузера IE с IP-адресом 172.111.222.55
RewriteCond %{HTTP_USER_AGENT} MSIE RewriteCond %{REMOTE_ADDR} ^172\.111\.222\.55$ RewriteRule ^.*$ -
Запретим для всех файл disable_file.html:
<Files disable_file.html> deny from all </Files>
3.3. Разрешить доступ с одного ip
Доступ будет разрешен только с одного ip-адреса 172.111.222.55
order deny,allow deny from all allow from 172.111.222.55
3.4. Запретить доступ с разных ip
Запретить доступ к сайту с нескольких ip-адреса 172.112.222.55, 172.113.222.55, 172.114.*.*
<Limit GET POST PUT> order deny,allow deny from all deny from 172.112.222.55 deny from 172.113.222.55 deny 172.114.*.* </LIMIT>
3.5. Редирект в URL с больших символов на маленькие
Все большие буквы в адресе URL будут переведены на маленькие.
RewriteRule - RewriteRule ! - RewriteRule ^(*)A(.*)$ $1a$2 RewriteRule ^(*)B(.*)$ $1b$2 RewriteRule ^(*)C(.*)$ $1c$2 RewriteRule ^(*)D(.*)$ $1d$2 RewriteRule ^(*)E(.*)$ $1e$2 RewriteRule ^(*)F(.*)$ $1f$2 RewriteRule ^(*)G(.*)$ $1g$2 RewriteRule ^(*)H(.*)$ $1h$2 RewriteRule ^(*)I(.*)$ $1i$2 RewriteRule ^(*)J(.*)$ $1j$2 RewriteRule ^(*)K(.*)$ $1k$2 RewriteRule ^(*)L(.*)$ $1l$2 RewriteRule ^(*)M(.*)$ $1m$2 RewriteRule ^(*)N(.*)$ $1n$2 RewriteRule ^(*)O(.*)$ $1o$2 RewriteRule ^(*)P(.*)$ $1p$2 RewriteRule ^(*)Q(.*)$ $1q$2 RewriteRule ^(*)R(.*)$ $1r$2 RewriteRule ^(*)S(.*)$ $1s$2 RewriteRule ^(*)T(.*)$ $1t$2 RewriteRule ^(*)U(.*)$ $1u$2 RewriteRule ^(*)V(.*)$ $1v$2 RewriteRule ^(*)W(.*)$ $1w$2 RewriteRule ^(*)X(.*)$ $1x$2 RewriteRule ^(*)Y(.*)$ $1y$2 RewriteRule ^(*)Z(.*)$ $1z$2 RewriteRule - RewriteCond %{ENV:HASCAPS} TRUE RewriteRule ^/?(.*) /$1
Примеры 301 редиректов в .htaccess
Мы уже рассматривали множество примеров с редиректом по в статьях:
- 301 редирект для удаления/добавления слэша в конце URL
- 301 редирект с index (.html и .php) на корень сайта «/»
- Редирект 301 с http на https
- Редирект 301 с www на без www
- Смена адреса сайта — редирект со старого домена на новый
Здесь мы дополним варианты редиректов, которых еще не было.
2.1. Редирект с одной страницы на другую
Редирект с site.ru/cat/oldpage на site.ru/newpage.html
RewriteRule ^cat/oldpage.* /newpage.html
Или второй вариант:
Redirect 301 /cat/oldpage http://www.site.com/newpage.php
2.2. Редирект со всех файлов .htm на .html
RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)\.htm$ $1.html
Или второй вариант:
RewriteRule ^(.*)\.htm$ $1.html
С любой страницы в каталоге и подкаталогах /old/ будет происходит редирект на /new.php
RewriteRule ^old(.*)$ /new.php
2.4. Удаление лишних слэшей в адресе URL
Например, страница /catalog///stranica.html доступна и открывается. Чтобы избежать такой ситуации и не плодить бесконечное число дублей следует записать следующий редирект
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2
2.5. Реврайт без редиректа
Можно загрузить другую страницу без смены адреса страницы URL. Например, загрузим страницу /news.html, а в адресной строке будет отображаться адрес /news/happy
RewriteRule ^news/happy.* /news.html
2.6. Простановка замыкающего слеша в конце адреса главной страница
Например, многие сервера работают так, что последний слэш не пишется в URL. Например, http://site.ru. Ниже приведенный код решают это проблему: сайт будет открывать по http://site.ru/
RewriteCond %{REQUEST_URI} /++$ RewriteRule ^(.+)$ %{REQUEST_URI}/
Например для редиректа со страницы site.com/directoriya/stranica.html на site.com/stranica.html нужно прописать следующее:
RewriteRule ^directoriya/(.+)$ http://site.com/$1
Или второй вариант:
RewriteCond %{DOCUMENT_ROOT}/directoriya/$1 -f RewriteRule ^(.*)$ directoriya/$1
2.8. Редирект GET параметров
Например, сделать редирект со страницы /?act=page&id=2 на /page-2/
RewriteCond %{QUERY_STRING} act=page RewriteCond %{QUERY_STRING} id=(\d+) RewriteRule .* /page/%1/? ]
2.9. Редирект на мобильную версию сайта m.site.ru
В данном примере сначала проверяется факт того, что пользователь открыл сайт с мобильного устройства , далее происходит замена адреса сайта на m.URL
RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) RewriteRule ^$ http://m.%1
2.10. Редирект с поддомена
Например, выполним редирект с любой страницы поддомена poddomen.site.ru на основной домен site.ru
RewriteCond %{HTTP_HOST} ^poddomen.site.ru$ RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI}
Как сделать редирект?
Делаем редирект на php
В php есть замечательная функция , которая разрешает не только подменять стандартные заголовки, но и добавлять новые.
Первый параметр string — полностью сформированная строка заголовка, который необходимо добавить (без завершающего перевода строки «\n»)
Второй параметр replace указывает, нужно ли заменять заголовки с одинаковыми именами (true), или же добавлять в конец (false).
Параметр http_response_code указывает код http-ответа (300, 301, 302 и т.д.).
Пример редиректа на php
Делаем редирект в .htaccess
Для осуществления редиректа в .htaccess, можно использовать любую из трех директив Apache (Апач, httpd): Redirect, RedirectMatch, либо RewriteRule (при включенном RewriteEngine).
Необязательный параметр status — это три цифры — код редиректа (например, 301). Если не указан, то по умолчанию подставляется 302.
URL-path — часть запрашиваемого пользователем (или поисковиком) адреса, которая должна обязательно начинаться со слеша (/).
URL-to-redirect — полный адрес сайта (и, возможно, часть пути), на который будет осуществляться редирект. Должен быть вида http: //site.ru/ — то есть обязательно должен присутствовать протокол (http://) и закрывающий адрес сайта слеш (/).
Если URL-path заканчивается не слешем, то редирект будет срабатывать только в случае точного совпадения запрошенного пользователем адреса и URL-path.
Если URL-path заканчивается слешем, то редирект сработает не только для указанного адреса, но и для всех, которые начинаются на указанный. А к URL-to-redirect будет добавлена часть адреса, следующая за последним указанным слешем в URL-path.
Пример
Делаем редирект на html
Это особый вид редиректа. Так как он располагается в заголовке html-документа, то страница, на которой он расположен, с одной стороны является полноценной страницей — на най может присутствовать текст, картинки и т.д. А с другой — это редирект, который срабатывает через несколько секунд (или сразу же, если указать задержку в 0 секунд).
Первый параметр seconds — это количество секунд (после полной загрузки страницы), по истечении которых произойдет редирект на второй параметр URL-to-redirect.
Пример
Редирект при помощи javascript
Редирект, написанный на яваскрипт (или же джаваскрипт — как кому больше нравится), хотя и не отдает 3xx редирект, но все же позволяет переадресовывать пользователей на нужную страницу.
Такой редирект часто используют для «обмана» поисковых систем: так как javascript обрабатывается только в браузере пользователя, но не обрабатывается поисковыми пауками. На сегодняшний день это утверждение справедливо для всех поисковиков, кроме гугла: Google успешно распознает многие редиректы, написанные с помощью яваскрипт.
- PHP
- Редиректы
- Примеры
Примеры перенаправлений
RedirectMatch 301 ^/blog/about /blog/about.html
Redirect /index.html /new/
Redirect /index.html /default.html
Redirect /private/ https://www.example.com/private/
Убедитесь, что другой сайт является вашим собственным. Никогда не делайте горячих ссылок на файлы с других сайтов.
Redirect /img/logo.gif https://www.example.com/images/logo.gif
Если вы хотите использовать регулярное выражение для перенаправления чего-либо, используйте директиву RedirectMatch:
RedirectMatch "^/oldfile\.html/?$" "https://example.com/newfile.php"
Вы также можете перенаправлять ошибки 404. Вместо того чтобы выводить страницу 404, вы перенаправляете на домашнюю страницу сайта.
ErrorDocument 404 https://example.com/
Этот пример перенаправляет файлы из старой директории в новую директорию . Файл должен существовать в новой директории.
RewriteRule ^blog/archives/(.*)$ /newarchives/$1
PHP Redirect with HTTP Status Code
Create a sample function called movePage() in sitefunctions.php (note I’m not the author of the following I found it somewhere else on the Internet):
function movePage($num,$url){ static $http = array ( 100 => "HTTP/1.1 100 Continue", 101 => "HTTP/1.1 101 Switching Protocols", 200 => "HTTP/1.1 200 OK", 201 => "HTTP/1.1 201 Created", 202 => "HTTP/1.1 202 Accepted", 203 => "HTTP/1.1 203 Non-Authoritative Information", 204 => "HTTP/1.1 204 No Content", 205 => "HTTP/1.1 205 Reset Content", 206 => "HTTP/1.1 206 Partial Content", 300 => "HTTP/1.1 300 Multiple Choices", 301 => "HTTP/1.1 301 Moved Permanently", 302 => "HTTP/1.1 302 Found", 303 => "HTTP/1.1 303 See Other", 304 => "HTTP/1.1 304 Not Modified", 305 => "HTTP/1.1 305 Use Proxy", 307 => "HTTP/1.1 307 Temporary Redirect", 400 => "HTTP/1.1 400 Bad Request", 401 => "HTTP/1.1 401 Unauthorized", 402 => "HTTP/1.1 402 Payment Required", 403 => "HTTP/1.1 403 Forbidden", 404 => "HTTP/1.1 404 Not Found", 405 => "HTTP/1.1 405 Method Not Allowed", 406 => "HTTP/1.1 406 Not Acceptable", 407 => "HTTP/1.1 407 Proxy Authentication Required", 408 => "HTTP/1.1 408 Request Time-out", 409 => "HTTP/1.1 409 Conflict", 410 => "HTTP/1.1 410 Gone", 411 => "HTTP/1.1 411 Length Required", 412 => "HTTP/1.1 412 Precondition Failed", 413 => "HTTP/1.1 413 Request Entity Too Large", 414 => "HTTP/1.1 414 Request-URI Too Large", 415 => "HTTP/1.1 415 Unsupported Media Type", 416 => "HTTP/1.1 416 Requested range not satisfiable", 417 => "HTTP/1.1 417 Expectation Failed", 500 => "HTTP/1.1 500 Internal Server Error", 501 => "HTTP/1.1 501 Not Implemented", 502 => "HTTP/1.1 502 Bad Gateway", 503 => "HTTP/1.1 503 Service Unavailable", 504 => "HTTP/1.1 504 Gateway Time-out" ); header($http$num); header ("Location: $url"); } }
First include sitefunctions.php and than call movePage() as follows:
<?php @include("/path/to/sitefunctions.php"); /* Move page with 301 http status code*/ movePage(301,"http://www.cyberciti.biz/"); ?>