Вяхирь ucp php redirect. Как в PHP задать редирект на другой URL до загрузки страницы? Удаляем директорию каталога из URL
Предположим, что вы хотите, чтобы пользователям, которые переходят на страницу https://example.com/initial.php отображалась страница https://example.com/final.php . Это можно сделать с помощью несколько методов PHP , JavaScript и HTML . В этой статье мы расскажем о каждом из методов, которые можно использовать для PHP перенаправления на другую страницу.
Вот несколько переменных, которые мы будем использовать:
Использование функции PHP header() для редиректа URL-адресаЕсли хотите добавить редирект с initial.php на final.php , можно поместить на веб-странице initial.php следующий код. Он отправляет в браузер новый заголовок location :
Здесь мы используем PHP-функцию header() , чтобы создать редирект. Нужно поместить этот код перед любым HTML или текстом. Иначе вы получите сообщение об ошибке, связанной с тем, что заголовок уже отправлен. Также можно использовать буферизацию вывода, чтобы не допустить этой ошибки отправки заголовков. В следующем примере данный способ перенаправления PHP показан в действии:
Чтобы выполнить переадресацию с помощью функции header() , функция ob_start() должна быть первой в PHP-скрипте . Благодаря этому не будут возникать ошибки заголовков.
В качестве дополнительной меры можно добавить die() или exit() сразу после редиректа заголовка, чтобы остальной код веб-страницы не выполнялся. В отдельных случаях поисковые роботы или браузеры могут не обращать внимания на указание в заголовке Location . Что таит в себе потенциальные угрозы для безопасности сайта:
Чтобы прояснить ситуацию: die() или exit() не имеют отношения к редиректам. Они используются для предотвращения выполнения остальной части кода на веб-странице.
При PHP перенаправлении на страницу рекомендуется использовать абсолютные URL-адреса при указании значения заголовка Location . Но относительные URL-адреса тоже будут работать. Также можно использовать эту функцию для перенаправления пользователей на внешние сайты или веб-страницы.
Вывод кода JavaScript-редиректа с помощью функции PHP echo()Это не является чистым PHP-решением . Тем не менее, оно также эффективно. Вы можете использовать функцию PHP echo() для вывода кода JavaScript , который будет обрабатывать редирект.
Если воспользуетесь этим решением, то не придется использовать буферизацию вывода. Что также предотвращает возникновение ошибок, связанных с отправкой заголовков.
Ниже приводится несколько примеров, в которых использованы разные методы JavaScript для редиректа с текущей страницы на другую:
Единственным недостатком этого метода перенаправления на другой сайт PHP является то, что JavaScript работает на стороне клиента. А у ваших посетителей может быть отключен JavaScript .
Использование метатегов HTML для редиректаТакже можно использовать базовый HTML для выполнения редиректа. Это может показаться непрофессиональным, но это работает. И не нужно беспокоиться о том, что в браузере отключен JavaScript или ранее была отправлена ошибка заголовков:
Также можно использовать последнюю строку из предыдущего примера, чтобы автоматически обновлять страницу каждые «n » секунд. Например, следующий код будет автоматически обновлять страницу каждые 8 секунд.
Довольно важный момент при настройке сайта. Неправильно настроенный редирект может сильно повредить поисковой выдачи сайта. Самые распространённые ситуации, в которых приходиться использование Permanent Redirect 301:
- Смена адреса сайта - вы купили свой домен и решили переехать с site.example.com на site.ru
- Склейка зеркал - если ваш сайт доступен по адресу www.site.ru и site.ru, поисковые системы могут посчитать это как два разных сайта, поэтому для начала необходимо определиться с главным зеркалом (с www или без www) и настроить редиректы на основное зеркало.
- Когда страница (одна или несколько) сменила свой адрес - в какой то момент стало понятно, что адреса http://example.com/index.php?option=com_content&task=view&id=23&Itemid=1 не есть хорошо, и нужно их переделать в http://example.com/sport/news12 , но жалко терять позиции в индексе поисковых систем (поскольку для них это будет новая статья).
- Еще один способ для борьбы с дублями страниц
Важно: если страница перемещена временно используйте 302 Moved Temporarily. Склейки страниц в этом случае не произойдет и страницу с редиректом можно будет всегда восстановить.
Permanent Redirect 301 для apache (.htaccess)Вставлять правила нужно сразу после строк:
RewriteEngine On RewriteBase / # чтобы обрезать полный путь, от корня сервера до корня сайта
сами правила задаются при помощи регулярных выражений, напомним синтаксис:
- Метасимволы, для задания групп символов или «меток» в шаблоне:
- ^ - метка начала строки,
- $ - метка конца строки,
- ! - отрицание,
- \ - экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
- . - точка, обозначает любой символ, но только один,
- () - группировка.
- Модификаторы, ставятся после обычных символов, метасимволов или их групп:
- ? - символ повторяется 0 или 1 раз,
- * - повторяется от 0 до 65536 раз,
- + - повторяется от 1 до 65536 раз.
- Флаги, определяют дополнительные опции для данного правила:
- NC - (nocase) отключает проверку регистра символов.
- R - (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY).
С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY). Как вы понимаете, это то самое, что нам и надо. - L - (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.
Рассмотри наиболее часто встречаемые ситуации:
RewriteCond %{HTTP_HOST} ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1 RewriteCond обозначаем условие, при совпадении с которым будет выполнено правило RewriteRule. Редирект с index.php (html) на главную страницу RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.(php|html|htm)\ HTTP/ RewriteRule ^(.*)index\.(php|html|htm)$ $1 Редирект при смене структуры сайта RewriteRule ^post/category/(.*)$ blog/category/$1 RewriteRule ^post/(.*)$ blog/post/$1 Permanent Redirect 301 на PHPЧтобы сообщить браузеру о том, что с запрошенной им страницы нужно произвести редирект на адрес http://site.ru выполните команды:
Header("HTTP/1.1 301 Moved Permanently"); header("Location: http://site.ru"); exit();
Permanent Redirect 301 для nginxПравила редиректа описывается в секции server.
Редирект с www.site.ru на site.ru server { listen 80; server_name www.site.ru; rewrite ^ http://site.ru$request_uri? permanent; }или общее правило для всех сайтов:
Server { server_name ~^(?! www\.); rewrite ^ http://www.$host$request_uri permanent; }
Редирект для с site.ru на www.site.ru server { listen 80; server_name site.ru; rewrite ^ http://www.site.ru$request_uri? permanent; } Редирект с index.php на главную страницу location = /index.php { if ($request_uri = /index.php) { rewrite ^ http://$host? permanent;#301 redirect } fastcgi_pass unix:/tmp/fastcgi.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }Быстрая навигация по этой странице:
Если вы решили написать скрипт и сделать редирект PHP, преимущества этого шага очевидны: PHP – серверно ориентированный язык скриптов; перенаправление будет выполняться посредством скрипта на сервере, а не в браузере посетителей. Некоторые перенаправления могут быть выполнены на стороне клиента — через редирект js (то есть через JavaScript редирект).
Это более гибкий и универсальный подход, и вы можете выполнить несколько типов редиректа в PHP, в отличие от других методов. Вот — наиболее частые виды редиректа, которые можно сделать в PHP: a) 301 редирект PHP (статус постоянного перенаправления), b) 302 редирект PHP (временный статус переадресации), с) Обновление.
Эта статья будет полезна, в первую очередь, для начинающих веб-мастеров, которые ищут способы реализации перенаправления URL, если это не возможно с использованием других распространенных решений, таких как Htaccess.
Заголовок языка PHP функцииНапример, предположим, вы хотите сделать редирект к этому URL http://www.somewebsite.com/target.php. В исходном PHP страницы, Вам просто следует вызвать этот скрипт редиректа:
Попробуйте также провести этот простой эксперимент на вашем локальном хостинге:
1) Откройте текстовый редактор и введите этот код:
Сохраните его как targetpage.php.
2) Откройте другой пустой текстовый файл и введите этот код:
Сохраните его как originatingpage.php.
3) Теперь запустите веб-браузер. В адресной строке браузера введите: http://localhost/originatingpage.php
4) Вы заметите, что после нажатия кнопки ввода, этот URL: http://localhost/originatingpage.php делает редирект на http://localhost/targetpage.php и на targetpage.php, и вы видите слова «Hi this is codex-x».
Одна из самых распространенных ошибок может крыться в оформлении кода html редиректа:
Попробуйте выполнить этот эксперимент:
Перейдите к скрипту originatingpage.php и добавьте любой HTML тег:
header(‘Location: http://localhost/targetpage.php’);
Предположим, у вас есть такой код:
Это – ошибка редиректа