У меня такая же ошибка.
Эта функция в порядке с 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'
Если вы работаете на Apache, вы также можете использовать .htaccess для перенаправления.
Redirect 301 / http://new-site.com/
Использование:
<?php
$url = "targetpage"
function redirect$url(){
if (headers_sent()) == false{
echo '<script>window.location.href="' . $url . '";</script>';
}
}
?>
Существует два способа перенаправления
Использование PHP
<?php
header("Location: http://example.com/page.php");
die();
?>
Использование Jquery
<script>
$(document).ready(function(){
location.href = 'http://example.com/page.php';
});
</script>
Да, можно использовать PHP. Мы перенаправим на другую страницу.
Попробуйте следующий код:
<?php
header("location:./"); // Redirect to index file
header("location:index.php"); // Redirect to index file
header("location:example.php");
?>
Чтобы перенаправить посетителя на другую страницу (особенно полезно в условном цикле), просто используйте следующий код:
<?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();
?>
header( 'Location: http://www.yoursite.com/new_page.html' );
Использование:
<?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.
?>
Вы можете использовать этот код перенаправления с одной страницы на другую
header("Location: index.php");
или если вы пытаетесь перенаправить с помощью JavaScript в php, то используйте тег script для перенаправления
echo "<script>window.open('your path where you redirect ','_self')</script>";
Большинство из этих ответов забывают очень важный шаг!
header("Location: myOtherPage.php");
die();
Если вы выйдите из этой жизненно важной второй строки, вы можете оказаться на The Daily WTF , Проблема заключается в том, что браузеры не имеют для учета заголовков, которые возвращает ваша страница, поэтому при игнорировании заголовков остальная часть страницы будет выполняться без перенаправления.
Вывод JavaScript из PHP с помощью echo, который сделает эту работу.
echo '<script type="text/javascript">
window.location = "http://www.google.com/"
</script>';
На самом деле вы не можете сделать это в PHP, если не буферизуете вывод страницы, а затем проверяете состояние перенаправления. Это может быть слишком хлопотно. Помните, что заголовки - это первое, что отправляется со страницы. Большая часть перенаправления обычно требуется позже на странице. Для этого вы должны буферизовать весь вывод страницы и позже проверить состояние перенаправления. В этот момент вы можете либо перенаправить заголовок страницы пользователя (), либо просто отобразить буферизованный вывод.
Подробнее о буферизации (преимущества)
Резюме существующих ответов плюс два моих собственных цента:
Вы можете использовать функцию header()
для отправки нового HTTP-заголовка, но его необходимо отправить в браузер перед любым HTML или текстом (например, перед объявлением <!DOCTYPE ...>
).
header('Location: '.$newURL);
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. Это не так для многих других пользователей. агенты, такие как пауки и роботы.
HTTP-заголовки и функция header()
в PHP
Вы можете использовать альтернативный метод http_redirect($url);
, для которого требуется установить пакет PECL pecl .
Эта функция не включает 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();
}
Как уже упоминалось header()
перенаправляет только работу, прежде чем что-либо записывается. Они обычно терпит неудачу, если вызывается в середине HTML-вывода . Тогда вы можете использовать обходной путь заголовка HTML (не очень профессиональный! ) вроде:
<meta http-equiv="refresh" content="0;url=finalpage.html">
Или даже редирект JavaScript.
window.location.replace("http://example.com/");
Есть несколько способов сделать это, но если вы предпочитаете 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”);
. . .
Ссылки;
Многие из этих ответов верны, но они предполагают, что у вас есть абсолютный 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
В канун семантической паутины правильность - это то, что нужно учитывать. К сожалению, PHP-заголовок "Location" все еще использует код HTTP 302 , который, строго говоря, не самый лучший для перенаправления. Вместо этого следует использовать 303 .
W3C достаточно любезен, чтобы упомянуть , что заголовок 303 несовместим со «многими пользовательскими агентами до HTTP / 1.1», что в настоящее время не означает отсутствие браузера. Итак, 302 - это реликвия, которую не следует использовать .
... или вы можете просто проигнорировать это, как и все остальные ...
Как и другие здесь сказали, отправив заголовок местоположения с:
header( "Location: http://www.mywebsite.com/otherpage.php" );
, но вам нужно сделать это, прежде чем вы отправил любой другой вывод в браузер.
Кроме того, если вы собираетесь использовать это для блокировки неаутентифицированных пользователей с определенных страниц, как вы упомянули, имейте в виду, что некоторые пользовательские агенты будут игнорировать это и в любом случае продолжите работу с текущей страницей, поэтому вам нужно умереть () после ее отправки.
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 ()!
Используйте функцию 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 независимо от используемого клиента.