Типы редиректов
Есть несколько типов редиректов, рассмотрите каждый из них в кратце, чтобы определить какой из них вам больше подходит.
Редирект через htaccess
- самый популярный, и довольно простой способ.
Чтобы его сделать,
вам понадобится создать в папке сайта файл с названием.htaccess (обратите внимание, что
название файла начинается с точки, это не опечатка). Если вы используете CMS WordPress или
Joomla, то скорее всего этот файл у вас уже есть, в этом случае вам нужно будет просто
отредактировать его.
Читайте ниже чтобы узнать какие именно инструкции в нем нужно прописать, чтобы создать
перенаправление.
Редирект при помощи PHP - подойдет в том случае, если вы разбираетесь в PHP и знаете структуру своего сайта. Этот вариант подойдет вам, если ваш сайт написан не на CMS. В ином случае лучше используйте редирект через htaccess.
Редирект HTML - если у вас простой HTML сайт и вам нужно сделать перенаправление для одной страницы - это самый простой вариант. Сделать перенаправление для всего сайта этим способом будет трудозатратно, особенно если у вас на сайте больше 10 страниц.
Редирект при помощи JavaScript - этот способ подойдет также в том случае, если у вас простой сайт, либо если нужно сделать редирект для одной - двух страниц, либо для всего сайта в целом.
Редирект при помощи.htaccess файла
Инструкции, которые вы увидите ниже, нужно прописать в файл.htaccess в самое начало.
Redirect / http://new-site.ru/
В этом примере, перенаправление будет происходить на сайт new-site.ru
Redirect /page-1.html /page-2.html
В этом примере,
перенаправление будет происходить со страницы page-1.html на страницу page-2.html.
Обе страницы должны располагаться на одном домене.
Этот вариант подходит для
замены старых страниц сайта на новые.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.example\.ru
RewriteRule ^(.*)$ http://example.ru/$1
В этом примере, посетители будут перенаправляться с http://www.example.ru на http://example.ru.
Redirect 301 /blog/page-1.html http://example.com/page-2.htm
В этом примере, посетители будут перенаправляться со страницы blog/page-1.html на example.com/page-2.htm .
ErrorDocument 404 /index.html
Пропишите эту строку в.htaccess файле, и тогда все посетители, которым встретится ошибка 404, будут перенаправлены на index.html .
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Пропишите эту строку в.htaccess файле, и тогда все посетители вошедшие на сайт по протоколу HTTP будут перенаправляться на защищенный протокол HTTPS.
Если вы прописываете редирект для WordPress , то обратите внимание на то, что в файле уже есть строка RewriteEngine On. Поэтому сразу под ней вам нужно добавить такие строки
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1
PHP редирект
В PHP редирект делается так: сервер отправляет заголовки headers браузеру посетителя,
и тот переходит по нужному адресу автоматически.
Стоит отметить важный момент,
отправлять заголовки можно только до вывода другой
информации. То есть они должны отправляться до вывода любой другой информации через
echo
и до отправки кук.
В этом примере, перенаправление будет происходить на сайт http://example.com
Здесь перенаправление будет происходить на http://example.com/page.html
Здесь если посетитель сайта зайдет на страницу blog/post-1.html то он будет перенаправлен на http://example.com/page.html
HTML редирект
Чтобы сделать редирект через HTML, нужно добавить на каждую страницу где он планируется
специальный мета тег. Мета тег прописывается внутри тега
.
На больших сайтах этот метод не удобен, и рекомендуется использовать
редирект через .
В этом примере, перенаправление будет происходить на сайт https://сайт с задержкой в 5 секунд. Если установить значение задержки вместо 5 в 0, то посетитель будет перенаправляться на другой сайт моментально.
(PHP 4, PHP 5, PHP 7)
header — Send a raw HTTP header
Descriptionheader (string $header [, bool $replace = TRUE [, int $http_response_code ]]) : void
header() is used to send a raw HTTP header. See the » HTTP/1.1 specification for more information on HTTP headers.
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. It is a very common error to read code with include , or require , functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
The header string.
There are two special-case header calls. The first is a header that starts with the string "HTTP/ " (case is not significant), which will be used to figure out the HTTP status code to send. For example, if you have configured Apache to use a PHP script to handle requests for missing files (using the ErrorDocument directive), you may want to make sure that your script generates the proper status code.
The second special case is the "Location:" header. Not only does it send this header back to the browser, but it also returns a REDIRECT (302) status code to the browser unless the 201 or a 3xx status code has already been set.
Replace
The optional replace parameter indicates whether the header should replace a previous similar header, or add a second header of the same type. By default it will replace, but if you pass in FALSE as the second argument you can force multiple headers of the same type. For example:
Http_response_code
Forces the HTTP response code to the specified value. Note that this parameter only has an effect if the header is not empty.
Return ValuesNo value is returned.
Changelog5.1.2 | This function now prevents more than one header to be sent at once as a protection against header injection attacks. |
Example #1 Download dialog
If you want the user to be prompted to save the data you are sending, such as a generated PDF file, you can use the » Content-Disposition header to supply a recommended filename and force the browser to display the save dialog.
Your headers now look like this:
HTTP/1.1 200 OK
Server: Apache/2.2.11 (Unix)
X-Powered-By: PHP/5.2.8
Date: Fri, 16 Oct 2009 23:05:07 GMT
Connection: close
16 years ago
If you haven"t used, HTTP Response 204 can be very convenient. 204 tells the server to immediately termiante this request. This is helpful if you want a javascript (or similar) client-side function to execute a server-side function without refreshing or changing the current webpage. Great for updating database, setting global variables, etc.
Header("status: 204"); (or the other call)
header("HTTP/1.0 204 No Response");
10 years ago
Here is a php script I wrote to stream a file and crypt it with a xor operation on the bytes and with a key:
The encryption works very good but the speed is decrease by 2, it is now 520KiB/s. The user is now asked for a md5 password (instead of keeping it in the code directly). There is some part in French because it"s my native language so modify it as you want.