Как мне сделать редирект в PHP?

У меня такая же ошибка.

Эта функция в порядке с PowerShell ISE, но не работает с PowerGUI

Start-Process -FilePath "C:\WINDOWS\System32\cmd.exe" -Credential $credential -ArgumentList ("/c $sFileExecutable")

Она работает с параметром WorkingDirectory

Start-Process -FilePath 'cmd.exe' -Credential $credential -ArgumentList ("/c $sFileExecutable") -WorkingDirectory 'C:\Windows\System32'
1162
задан Peter Mortensen 18 February 2019 в 06:59
поделиться

18 ответов

Если вы работаете на Apache, вы также можете использовать .htaccess для перенаправления.

Redirect 301 / http://new-site.com/
1
ответ дан jabko87 18 February 2019 в 06:59
поделиться

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

<?php
    $url = "targetpage"
    function redirect$url(){
        if (headers_sent()) == false{
            echo '<script>window.location.href="' . $url . '";</script>';
        }
    }
?>
2
ответ дан Peter Mortensen 18 February 2019 в 06:59
поделиться

Существует два способа перенаправления

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

<?php 

header("Location: http://example.com/page.php");
die();
?>

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

<script>

     $(document).ready(function(){
    location.href = 'http://example.com/page.php';
     });

</script>
4
ответ дан xmaster 18 February 2019 в 06:59
поделиться

Да, можно использовать PHP. Мы перенаправим на другую страницу.

Попробуйте следующий код:

<?php
    header("location:./"); // Redirect to index file
    header("location:index.php"); // Redirect to index file
    header("location:example.php");
?>
4
ответ дан Star 18 February 2019 в 06:59
поделиться

Чтобы перенаправить посетителя на другую страницу (особенно полезно в условном цикле), просто используйте следующий код:

<?php
    header('Location: mypage.php');
?>

В этом случае mypage.php - это адрес страницы, на которую вы перешли. хотел бы перенаправить посетителей. Этот адрес может быть абсолютным и может также включать параметры в этом формате: mypage.php?param1=val1&m2=val2)

Относительный / Абсолютный путь

При работе с относительными или абсолютными путями идеально подходит для выбора абсолютного пути от корня сервера (DOCUMENT_ROOT). Используйте следующий формат:

<?php
    header('Location: /directory/mypage.php');
?>

Если целевая страница находится на другом сервере, укажите полный URL-адрес:

<?php
    header('Location: http://www.ccm.net/forum/');
?>

Заголовки HTTP

Согласно протоколу HTTP, заголовки HTTP должны отправляться before любым типам контента. Это означает, что никакие символы никогда не должны отправляться перед заголовком - даже пустое пространство!

Временные / постоянные перенаправления

По умолчанию тип перенаправления представлен выше временный Это означает, что поисковые системы, такие как Google Search, не будут учитывать перенаправление при индексации.

Если вы хотите уведомить поисковые системы о том, что страница была постоянно перемещена в другое место, используйте следующий код:

<?
    header('Status: 301 Moved Permanently', false, 301);
    header('Location: new_address');
?>

Например, эта страница имеет следующий код:

<?
    header('Status: 301 Moved Permanently', false, 301);
    header('Location: /pc/imprimante.php3');
    exit();
?>

Когда вы нажимаете на ссылку выше, вы автоматически перенаправляетесь на эту страницу. Более того, это постоянное перенаправление (статус: 301 перемещен навсегда). Поэтому, если вы введете первый URL в Google, вы будете автоматически перенаправлены на вторую, перенаправленную ссылку.

Интерпретация кода PHP

Код PHP, расположенный после заголовка (), будет интерпретироваться сервером, даже если посетитель перейдет по адресу, указанному в перенаправлении. В большинстве случаев это означает, что вам нужен метод, чтобы следовать функции header() функции exit(), чтобы уменьшить нагрузку на сервер:

<?
    header('Status: 301 Moved Permanently', false, 301);
    header('Location: address');
    exit();
?>
6
ответ дан Star 18 February 2019 в 06:59
поделиться
header("Location: /index.php");
exit(0);   
10
ответ дан joan16v 18 February 2019 в 06:59
поделиться

header( 'Location: http://www.yoursite.com/new_page.html' );

13
ответ дан Daniel A. White 18 February 2019 в 06:59
поделиться

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

<?php
    header('Location: redirectpage.php');
    header('Location: redirectpage.php');
    exit();
    echo "<script>location.href='redirectpage.php';</script>";
?>

Это обычное и обычное перенаправление PHP, но вы можете сделать страницу перенаправления за несколько секунд ожидания с помощью приведенного ниже кода:

<?php
    header('refresh:5;url=redirectpage.php '); // Note: here 5 means 5 seconds wait for redirect.
?>
8
ответ дан Peter Mortensen 18 February 2019 в 06:59
поделиться

Вы можете использовать этот код перенаправления с одной страницы на другую

header("Location: index.php");

или если вы пытаетесь перенаправить с помощью JavaScript в php, то используйте тег script для перенаправления

echo "<script>window.open('your path where you redirect ','_self')</script>";
7
ответ дан Kashif 18 February 2019 в 06:59
поделиться

Большинство из этих ответов забывают очень важный шаг!

header("Location: myOtherPage.php");
die();

Если вы выйдите из этой жизненно важной второй строки, вы можете оказаться на The Daily WTF , Проблема заключается в том, что браузеры не имеют для учета заголовков, которые возвращает ваша страница, поэтому при игнорировании заголовков остальная часть страницы будет выполняться без перенаправления.

52
ответ дан nickf 18 February 2019 в 06:59
поделиться

Вывод JavaScript из PHP с помощью echo, который сделает эту работу.

echo '<script type="text/javascript">
           window.location = "http://www.google.com/"
      </script>';

На самом деле вы не можете сделать это в PHP, если не буферизуете вывод страницы, а затем проверяете состояние перенаправления. Это может быть слишком хлопотно. Помните, что заголовки - это первое, что отправляется со страницы. Большая часть перенаправления обычно требуется позже на странице. Для этого вы должны буферизовать весь вывод страницы и позже проверить состояние перенаправления. В этот момент вы можете либо перенаправить заголовок страницы пользователя (), либо просто отобразить буферизованный вывод.

Подробнее о буферизации (преимущества)

Что такое буферизация вывода?

94
ответ дан Community 18 February 2019 в 06:59
поделиться

Резюме существующих ответов плюс два моих собственных цента:

1. Базовый ответ

Вы можете использовать функцию header() для отправки нового HTTP-заголовка, но его необходимо отправить в браузер перед любым HTML или текстом (например, перед объявлением <!DOCTYPE ...>).

header('Location: '.$newURL);

2. Важные детали

die () или exit ()

header("Location: http://example.com/myOtherPage.php");
die();

Почему вы должны использовать die() или exit(): Ежедневный WTF

Абсолютный или относительный URL

С июня 2014 года можно использовать как абсолютные, так и относительные URL. См. RFC 7231 , который заменил старый RFC 2616 , где допускались только абсолютные URL.

Коды состояния

Заголовок PHP «Location» все еще использует код HTTP 302 , но вы не должны его использовать. Вам следует рассмотреть либо 301 (постоянное перенаправление), либо 303 (другое).

Примечание: W3C упоминает , что заголовок 303 несовместим со «многими пользовательскими агентами до HTTP / 1.1. В настоящее время все используемые браузеры являются пользовательскими агентами HTTP / 1.1. Это не так для многих других пользователей. агенты, такие как пауки и роботы.

3. Документация

HTTP-заголовки и функция header() в PHP

4. Альтернативы

Вы можете использовать альтернативный метод http_redirect($url);, для которого требуется установить пакет PECL pecl .

5. Вспомогательные функции

Эта функция не включает 303 код состояния:

function Redirect($url, $permanent = false)
{
    header('Location: ' . $url, true, $permanent ? 301 : 302);

    exit();
}

Redirect('http://example.com/', false);

Это более гибко:

function redirect($url, $statusCode = 303)
{
   header('Location: ' . $url, true, $statusCode);
   die();
}

6. Обходной путь

Как уже упоминалось header() перенаправляет только работу, прежде чем что-либо записывается. Они обычно терпит неудачу, если вызывается в середине HTML-вывода . Тогда вы можете использовать обходной путь заголовка HTML (не очень профессиональный! ) вроде:

 <meta http-equiv="refresh" content="0;url=finalpage.html">

Или даже редирект JavaScript.

window.location.replace("http://example.com/");
1596
ответ дан 21 revs, 11 users 73% 18 February 2019 в 06:59
поделиться

Есть несколько способов сделать это, но если вы предпочитаете php, я бы рекомендовал использовать функцию header().

В основном

$your_target_url = “www.example.com/index.php”;
header(“Location : $your_target_url”);
exit();

Если вы хотите поднять его на ступеньку выше, лучше всего использовать его в функциях. Таким образом, вы сможете добавлять аутентификации и другие проверяющие элементы в него.

Давайте попробуем, проверив уровень пользователя.

Итак, предположим, что вы сохранили уровень полномочий пользователя в сеансе под названием u_auth.

В function.php

<?php
    function authRedirect($get_auth_level,
                          $required_level,
                          $if_fail_link = “www.example.com/index.php”){
        if ($get_auth_level != $required_level){
            header(location : $if_fail_link);
            return false;
            exit();
        }
        else{
            return true;
        }
     }

     . . .

Вы будете вызывать функцию для каждой страницы, которую хотите аутентифицировать.

Как на page.php или любой другой странице.

<?php

    // page.php

    require “function.php”

    // Redirects to www.example.com/index.php if the
    // user isn’t authentication level 5
    authRedirect(

Есть несколько способов сделать это, но если вы предпочитаете php, я бы рекомендовал использовать функцию header().

В основном

[110]

Если вы хотите поднять его на ступеньку выше, лучше всего использовать его в функциях. Таким образом, вы сможете добавлять аутентификации и другие проверяющие элементы в него.

Давайте попробуем, проверив уровень пользователя.

Итак, предположим, что вы сохранили уровень полномочий пользователя в сеансе под названием u_auth.

В function.php

[111]

Вы будете вызывать функцию для каждой страницы, которую хотите аутентифицировать.

Как на page.php или любой другой странице.

[112]

Ссылки;

SESSION[‘u_auth’], 5); // Redirects to www.example.com/index.php if the // user isn’t authentication level 4 authRedirect(

Есть несколько способов сделать это, но если вы предпочитаете php, я бы рекомендовал использовать функцию header().

В основном

[110]

Если вы хотите поднять его на ступеньку выше, лучше всего использовать его в функциях. Таким образом, вы сможете добавлять аутентификации и другие проверяющие элементы в него.

Давайте попробуем, проверив уровень пользователя.

Итак, предположим, что вы сохранили уровень полномочий пользователя в сеансе под названием u_auth.

В function.php

[111]

Вы будете вызывать функцию для каждой страницы, которую хотите аутентифицировать.

Как на page.php или любой другой странице.

[112]

Ссылки;

SESSION[‘u_auth’], 4); // Redirects to www.someotherplace.com/somepage.php if the // user isn’t authentication level 2 authRedirect(

Есть несколько способов сделать это, но если вы предпочитаете php, я бы рекомендовал использовать функцию header().

В основном

[110]

Если вы хотите поднять его на ступеньку выше, лучше всего использовать его в функциях. Таким образом, вы сможете добавлять аутентификации и другие проверяющие элементы в него.

Давайте попробуем, проверив уровень пользователя.

Итак, предположим, что вы сохранили уровень полномочий пользователя в сеансе под названием u_auth.

В function.php

[111]

Вы будете вызывать функцию для каждой страницы, которую хотите аутентифицировать.

Как на page.php или любой другой странице.

[112]

Ссылки;

SESSION[‘u_auth’], 2, “www.someotherplace.com/somepage.php”); . . .

Ссылки;

1
ответ дан Peter Mortensen 18 February 2019 в 06:59
поделиться

Многие из этих ответов верны, но они предполагают, что у вас есть абсолютный URL, что может быть не так. Если вы хотите использовать относительный URL и генерировать остальное, то вы можете сделать что-то вроде этого ...

$url = 'http://' . 

Многие из этих ответов верны, но они предполагают, что у вас есть абсолютный URL, что может быть не так. Если вы хотите использовать относительный URL и генерировать остальное, то вы можете сделать что-то вроде этого ...

[110]SERVER['HTTP_HOST']; // Get the server $url .= rtrim(dirname(

Многие из этих ответов верны, но они предполагают, что у вас есть абсолютный URL, что может быть не так. Если вы хотите использовать относительный URL и генерировать остальное, то вы можете сделать что-то вроде этого ...

[110]SERVER['PHP_SELF']), '/\\'); // Get the current directory $url .= '/your-relative/path-goes/here/'; // <-- Your relative path header('Location: ' . $url, true, 302); // Use either 301 or 302
18
ответ дан Luke 18 February 2019 в 06:59
поделиться

В канун семантической паутины правильность - это то, что нужно учитывать. К сожалению, PHP-заголовок "Location" все еще использует код HTTP 302 , который, строго говоря, не самый лучший для перенаправления. Вместо этого следует использовать 303 .

W3C достаточно любезен, чтобы упомянуть , что заголовок 303 несовместим со «многими пользовательскими агентами до HTTP / 1.1», что в настоящее время не означает отсутствие браузера. Итак, 302 - это реликвия, которую не следует использовать .

... или вы можете просто проигнорировать это, как и все остальные ...

6
ответ дан Henrik Paul 18 February 2019 в 06:59
поделиться

Как и другие здесь сказали, отправив заголовок местоположения с:

header( "Location: http://www.mywebsite.com/otherpage.php" );

, но вам нужно сделать это, прежде чем вы отправил любой другой вывод в браузер.

Кроме того, если вы собираетесь использовать это для блокировки неаутентифицированных пользователей с определенных страниц, как вы упомянули, имейте в виду, что некоторые пользовательские агенты будут игнорировать это и в любом случае продолжите работу с текущей страницей, поэтому вам нужно умереть () после ее отправки.

6
ответ дан 19 December 2019 в 20:14
поделиться
function Redirect($url, $permanent = false)
{
    if (headers_sent() === false)
    {
        header('Location: ' . $url, true, ($permanent === true) ? 301 : 302);
    }

    exit();
}

Redirect('http://www.google.com/', false);

Не забудьте умереть () / exit ()!

106
ответ дан 19 December 2019 в 20:14
поделиться

Используйте функцию header () отправлять заголовок HTTP Location :

header('Location: '.$newURL);

Вопреки мнению некоторых, die () не имеет ничего общего с перенаправлением. Используйте его только , если вы хотите перенаправить вместо нормального выполнения.

Файл example.php :

<?php
    header('Location: static.html');
    $fh = fopen('/tmp/track.txt', 'a');
    fwrite($fh, $_SERVER['REMOTE_ADDR'] . ' ' . date('c') . "\n");
    fclose($fh);
?>

Результат трех выполнений:

bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00

Resuming - обязательный die () / exit () - это городская легенда, не имеющая ничего общего с реальным PHP. Это не имеет никакого отношения к клиенту, «уважающему» заголовок Location: . Отправка заголовка не останавливает выполнение PHP независимо от используемого клиента.

114
ответ дан 19 December 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: