if (strstr($_SERVER['REQUEST_URI'],'index.php')) {
header('HTTP/1.0 404 Not Found');
}
Mengapa ini tidak berhasil? Saya mendapatkan halaman kosong.
php
header
http-status-code-404
danorton
sumber
sumber
Jawaban:
Kode Anda secara teknis benar. Jika Anda melihat tajuk halaman kosong itu, Anda akan melihat tajuk 404, dan komputer / program lain akan dapat mengidentifikasi respons dengan benar karena file tidak ditemukan.
Tentu saja, pengguna Anda masih SOL. Biasanya, 404 ditangani oleh server web.
Masalahnya adalah, begitu server web mulai memproses halaman PHP, itu sudah melewati titik di mana ia akan menangani 404
Selain menyediakan header 404, PHP sekarang bertanggung jawab untuk menghasilkan halaman 404 yang sebenarnya.
sumber
Jika Anda melihat dua baris gema terakhir, di situlah Anda akan melihat kontennya. Anda dapat menyesuaikannya sesuka Anda.
sumber
Itu perilaku yang benar , terserah Anda untuk membuat konten untuk halaman 404.
Header 404 digunakan oleh spider dan manajer unduhan untuk menentukan apakah file itu ada.
(Halaman dengan header 404 tidak akan diindeks oleh google atau mesin pencari lainnya)
Namun pengguna normal tidak melihat http-header dan menggunakan halaman sebagai halaman normal.
sumber
Sebagai catatan, ini adalah penangan kasus:
sumber
die()
diperlukan?Muat halaman server default 404, jika Anda memilikinya, misalnya ditentukan untuk apache:
sumber
Karena php 5.4 sekarang dapat Anda lakukan
http_response_code(404);
sumber
Solusi lain, berdasarkan @ Kitet's.
Jika Anda memprogram situs web yang dihosting di server yang tidak Anda kendalikan, Anda tidak akan tahu file mana yang merupakan "404missing.html". Namun Anda masih bisa melakukan ini.
Dengan cara ini, Anda memberikan hasil yang sama persis dengan halaman 404 normal di server yang sama. Pengamat tidak akan dapat membedakan antara halaman PHP yang ada menghasilkan 404 dan halaman yang tidak ada.
sumber
coba dengan:
Sampai jumpa!
sumber
Versi yang sedikit lebih pendek. Menekan gema aneh.
sumber
tidak pernah menyederhanakan pernyataan gema, dan tidak pernah melupakan titik koma seperti di atas, juga mengapa menjalankan substr pada halaman, kita dapat dengan mudah menjalankan php_self
sumber
Jika Anda ingin halaman kesalahan default server ditampilkan, Anda harus menangani ini di server.
sumber
Anda melakukannya dengan benar meskipun itu bisa menggunakan pemurnian. Sepertinya itu sudah diatasi jadi mari kita bicara manfaat aplikasi praktis:
Sebuah situs web lama milik kami yang memiliki banyak koleksi dokumen teknologi multibahasa menjalankan ini di dalam kondisi yang lain:
Masalahnya (selain pesan yang tidak membantu dan pengalaman pengguna yang buruk) adalah bahwa kami biasanya menggunakan perayap tautan (dalam integritas kasus kami) untuk memeriksa tautan buruk dan dokumen yang hilang. Ini berarti bahwa kami mendapatkan jawaban benar yang benar 200 tidak ada kesalahan memberitahu kami bahwa ada file di sana. Integritas tidak tahu bahwa kami mengharapkan PDF, jadi kami harus menambahkan header 404 secara manual dengan php. Dengan menambahkan kode Anda di atas dadu (karena tidak ada yang akan dieksekusi dan tajuk harus selalu ada sebelum html apa pun yang diberikan), integritas (yang berperilaku kurang lebih seperti peramban) akan mengembalikan 404 dan kami akan tahu persis ke mana harus mencari yang hilang. file. Ada cara yang lebih elegan untuk memberi tahu pengguna bahwa ada kesalahan,
sumber
Coba ini:
sumber
Anda tahu, di situs web saya, saya membuat sesuatu seperti ini:
Saya harap ini membantu Anda.
sumber
Saya menemukan masalah ini .. Saya pikir bahwa mengarahkan ulang ke tautan yang tidak ada di server Anda mungkin melakukan trik! Karena server akan mengembalikan 404-nya:
header('Redirect abbb.404.nonexist');
<itu tidak ada pastisumber
Jika Anda ingin menampilkan halaman 404 default server, Anda dapat memuatnya dalam bingkai seperti ini:
sumber