PHP: запретить прямой доступ к странице - PullRequest
2 голосов
/ 25 июня 2009

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

У меня есть эта функция, которую я придумал, которая работает:

function prevent_direct_access()
{
    if($_SERVER['REQUEST_URI'] == $_SERVER['PHP_SELF'])
    {
        //include_once('404.php');
        header("Location: 404.php");
    }
}

Это именно то, что я хочу, URL не меняется, но содержимое меняется. Однако мне интересно, есть ли что-то, что мне нужно добавить, чтобы сказать поисковым системам, что это 404, а не индексировать его. Имейте в виду, что я не хочу, чтобы URL-адрес изменился.

Спасибо!

Ответы [ 4 ]

5 голосов
/ 25 июня 2009

Не перенаправлять, а отправить код состояния 404:

header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
exit;
0 голосов
/ 25 июня 2009

Просто чтобы уточнить:

  • У вас есть некоторый PHP, который вы хотите использовать в других программах PHP в системе
  • Вы не хотите, чтобы кто-либо имел к нему доступ, кроме как при запуске одной из других программ PHP

(т. Е. "Прямой" не означает "кроме как по ссылке на другой странице этого сайта")

Просто держите PHP-файл вне webroot. Таким образом, во-первых, у него не будет URL.

0 голосов
/ 25 июня 2009

Чтобы поисковые системы не индексировали его, используйте команду header(), чтобы отправить 404 lke this;

header("HTTP/1.0 404 Not Found");

Или поместите все такие файлы в одну папку, например, "includes", и добавьте "Deny / includes /" в свой файл robots.txt. Таким образом, вы также можете добавить файл «.htaccess» в тот же каталог с одной строкой - «Deny From All» - это скажет Apache заблокировать доступ (если apache настроен правильно) для другого уровня безопасности.

0 голосов
/ 25 июня 2009

для поисковых систем, если вы вернете HTTP-статус 404, они не должны индексироваться, я считаю. Но вы всегда можете перенаправить туда, где есть файл robots.txt

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