Чтобы понять заголовок PHP ()

Где вы используете заголовок команды ()?

У меня есть следующий код в обработчиках / handle_login.php. Пользователь отправился на сайт из index.php который является стартовым.

  if(!$logged_in){ header("Location: index.php"); die("You are not logged_in"); } 

Если if-clause истинно, я получаю ошибку 404, так как заголовок помещает меня в handlers/index.php , а не index.php .

Хотя я согласен с ниламо и графом, я надеюсь, что смогу дать более полную картину:

Использование относительных путей может иметь очень странные эффекты в зависимости от того, где браузер «думает», что он находится в иерархии вашего сайта. Например, предположим, что на сайте есть индексный файл '/index.php', но он настроен на принятие модуля и действия в пути URI. У вас может быть очень хороший URL-адрес:

 http://www.yoursite.com/forms/contact/ 

Из этой ситуации возвращаем заголовок, например:

 header("Location: index.php"); 

может привести к тому, что браузер попытается запросить

 http://www.yoursite.com/forms/contact/index.php 

что явно не то, что вы хотите. По этой причине обычно лучше использовать «/index.php», как рекомендовано выше, или даже лучше использовать полный URL-адрес, когда это возможно.

Надеюсь это поможет.

Укажите местоположение в полный URL-адрес index.php, а не только имя файла. Согласно php.net, это правильный способ сделать это, не используйте относительные пути. Вот пример:

  if(!$logged_in){ header("Location: http://exampledomain.com/index.php"); die("You are not logged_in"); } 

Попробуйте использовать '/':

 if(!$logged_in){ header("Location: /index.php"); die("You are not logged_in"); } 

Без косой черты предполагается, что вы ссылаетесь на что-то в текущем каталоге. Приклеивая эту косую черту спереди, вы явно ссылаетесь на файл в корне сайта. Поскольку страница является «index.php», вы можете так же легко использовать «header (« Местоположение: / »)».