Как заставить Apache вернуть 404, если не залогинен? - PullRequest
1 голос
/ 19 июля 2011

На моем сайте https://internal.example.com, файл /index.php является формой входа. Я хотел бы настроить Apache или PHP так, чтобы они возвращали ошибку 404 для любого файла, за исключением /index.php, если пользователь не вошел в систему (вместо 403, так что неясно, какие файлы находятся на сервере). Как бы я это сделал?

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

вернуть заголовок 404 просто:

 <?php
 if($loggedIn == false){
   header("HTTP/1.0 404 Not Found");
 } else{
   //some other code
 }
 ?>

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

Пример:

<?php 
if($loggedIn == False){
header("HTTP/1.0 404 Not Found");
?>
<html> 
  <head>
    <title>404 Not Found</title>
  </head>
  <body>
    <h1>Not Found</h1>
    <p>The requested URL <?=$_SERVER['PHP_SELF']?> was not found on this server.</p>
    <hr>
    <address>Apache/x.x.xx (Debian) Server at xxx.xxx.xxx.xxx Port x</address>
  </body>
</html>
<?php 
exit;
} else {
  //some other code here
}
?>
1 голос
/ 19 июля 2011
    if (!$logged_in)){
      header('HTTP/1.0 404 Not Found');
    }

http://php.net/manual/en/function.header.php

...