HTTP durum kodu göndermek için zaman?

6 Cevap php

O / o yok ya da o kullanıcıya ait değil içeriğe erişmeye çalıştığında, şu anda benim PHP betikleri, ben bir özel 404 bulunamadı hata sayfası kullanıcıyı yönlendirme. Şöyle:

header('Location: http://www.mydomain.com/error/notfound/');
exit;

Ben yukarıdaki başlık () çağrısı varsayılan bir 302 yönlendirme durum kodu gönderir biliyoruz.

Ben anlamıyorum, ancak, ben 404 bulunamadı durum kodunu göndermeniz gerekmektedir durumdur. Ben kullanıcıyı yönlendirebilir önce? Yoksa /error/notfound/ sayfayı görüntülemek alıyorsunuz?

Yardımlarınız için teşekkürler!

6 Cevap

Böyle bir şey yapmanız gerekir:

header("HTTP/1.0 404 Not Found");
include 'error.php';
die();

Sen hiç bir yönlendirme olarak 404 hataları yürütmek yok.

Ne gerçekten yapmak istediğiniz 404 durum başlığını göndermek ve daha sonra bir 404 sayfa gövdesi ile akım çıkışını değiştirin.

Bunu yapmanın çeşitli yolları vardır ve sitenizin nasıl yapılandığını üzerinde biraz bağlıdır. MVC uygulamalar genellikle ileri ile bu el. Ben bir özel durum atmak ve daha sonra kayıtlı özel durum işleyici 404 sayfa görüntülenmesi önemser diğer sistemleri gördüm.

Her neyse, kaba adımlar

  1. Içeriği geçersiz olduğunu belirlemek
  2. Geçerli yürütme patlak
  3. Herhangi bir çıktı temizleyin, herhangi olmalıdır.
  4. 404 durum başlığı gönder
  5. 404 sayfanın içeriğini gönder

Sen 404 ve Yer kullanamazsınız: birlikte. Yer sadece bazı tepkiler (201 ve 3xX) için geçerlidir

Ancak 404 yanıt vücut olarak özel bir HTML sayfası gönderebilirsiniz.

Php.net Gönderen:

İki özel çağrı biçimi vardır. İlk göndermek için HTTP durum kodu anlamaya kullanılacak dize "HTTP /" (harf önemli değildir) ile başlayan bir başlık olduğunu. Eğer (ErrorDocument yönergesini kullanarak) eksik dosya için istekleri işlemek için bir PHP komut dosyası kullanmak için Apache yapılandırılmış varsa Örneğin, size komut uygun bir durum kodu oluşturur emin olmak isteyebilirsiniz.

<?php
header("HTTP/1.0 404 Not Found");
?>

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

Eğer bir 404 HTTP durum kodu göndermeniz gerekmektedir. Tarayıcılar ve crawlers Bunu anlamak. Ayrıca vb sitenizin arama için bir formda, Soundex bağlantıları da dahil olmak üzere, ne açıklayan bir daha dostu bir hata sayfası dahil etmek isteyebilirsiniz

A "yönlendirme" ve "bulunamadı" farklı kavramlardır.

Which file could be found?
http://www.mydomain.com/error/notfound/
or
http://www.mydomain.com/not_exist.html

"Http://www.mydomain.com/not_exist.html" sayfa 404 başlığı VE "Sayfa Bulunamadı" içeriği olmalıdır.

Bir QuickFix olabilir:

header("HTTP/1.0 404 Not Found");
readfile('http://www.mydomain.com/error/notfound/');
exit;

Ama bu 2 apache istekleri gerektirir ve tür pis.