404 ve PHP ile ilgili bir soru

4 Cevap php

http://stackoverflow.com/questions/1712973/how-to-include-config-php-efficiently/1713000#1713000: Yani benim bir önceki soruya bulunan tek bir giriş noktası kullanıyorum

Hepimiz 404 hataları ne olduğunu biliyorum, bu yüzden hiçbir açıklama orada gerekli. Tek giriş noktası kullanırken varolmayan bir sayfaya erişmeye çalışırken Ancak, index.php?page=pokemon, bu 404 sayfaya gitmez. Peki nasıl hepsi PHP hatalarını görmez bu yüzden daha kullanıcı dostu yapmak ve benim 404 sayfaya doğrudan ziyaretçi olurdu bu sorunu çözebilir?

4 Cevap

Sen (., Sen olabilir sadece include() bir html dosyası örneğin) çıkışı kendi hata sayfasını gerektiği, ve header() fonksiyonunu kullanarak HTTP durum kodu ayarlayın:

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

Tabii ki, hata şablona dahil etmeden önce başlığını ayarlamanız gerekir.

Ben varsayalım Yapmanız tür bir if / elseif veya sağ, görüntülemek için hangi sayfa anlamaya değişken $ sayfada bir anahtar?

If so, just add an ELSE resp. default: branch which will display a custom error note to the user if an unexpected value is passed as $page.

HTH

Sen header fonksiyonunu kullanarak, tarayıcılar ve arama motoru robotları 404 durum kodu göndermeniz gerekir.

<?php
  // if page does not exist then
  header("HTTP/1.0 404 Not Found");
  // followed by html content indicating what went wrong
?>

Ben bir hata sayfasına yönlendiriliyorsunuz iyi bir fikir olup olmadığını emin değilim. Arama motorları karıştı alamadım ki doğrusu bunu önleyeceğini.

Aslında kullanıyorsanız user187291’s code, bu gibi değiştirin:

$page = "home";
if (isset($_GET['page'])) {
    $page = $_GET['page'];
}
$file = "$page.php";
if (preg_match('/\W/', $file) || !is_file($file)) {
    header($_SERVER['SERVER_PROTOCOL'].' 404 Not Found', true, 404);
    // print error message
    exit;
} else {
    include $file;
}

Eğer header kullanarak konum beri Ancak, hiçbir çıkış müşteriye gönderilen olduğundan emin olmak gerekir. Aksi HTTP başlık zaten gönderilir ve bunu değiştiremezsiniz. Herhangi bir çıktı tampon ve bir hata durumunda iptal için output control functions kullanabilirsiniz.