.Htaccess saya mengalihkan semua permintaan /word_here
ke /page.php?name=word_here
. Script PHP kemudian memeriksa apakah halaman yang diminta ada dalam susunan halamannya.
Jika tidak, bagaimana saya bisa mensimulasikan kesalahan 404? Saya mencoba ini, tetapi itu tidak mengakibatkan halaman 404 saya dikonfigurasi melalui ErrorDocument
di .htaccess
muncul.
header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
Apakah saya benar dalam berpikir bahwa itu salah untuk mengarahkan ke halaman kesalahan 404 saya?
Jawaban:
Jawaban terbaru (mulai PHP 5.4 atau yang lebih baru) untuk menghasilkan 404 halaman adalah dengan menggunakan
http_response_code
:die()
tidak sepenuhnya diperlukan, tetapi memastikan bahwa Anda tidak melanjutkan eksekusi normal.sumber
Apa yang Anda lakukan akan berhasil, dan browser akan menerima kode 404. Apa yang tidak akan dilakukannya adalah menampilkan halaman "tidak ditemukan" yang mungkin Anda harapkan, misalnya:
Tidak ditemukan
URL yang diminta /test.php tidak ditemukan di server ini.
Itu karena server web tidak mengirim halaman itu ketika PHP mengembalikan kode 404 (setidaknya Apache tidak). PHP bertanggung jawab untuk mengirimkan semua outputnya sendiri. Jadi jika Anda menginginkan halaman serupa, Anda harus mengirim HTML sendiri, misalnya:
Anda dapat mengkonfigurasi Apache untuk menggunakan halaman yang sama untuk pesan 404 miliknya sendiri, dengan meletakkan ini di httpd.conf:
sumber
Coba ini:
sumber
Buat halaman kesalahan kustom melalui file .htaccess
1. 404 - halaman tidak ditemukan
2. 500 - Kesalahan Server Internal
3. 403 - Terlarang
4. 400 - Permintaan buruk
5. 401 - Diperlukan Otorisasi
Anda juga dapat mengarahkan semua kesalahan ke satu halaman. Suka
sumber
Apakah Anda ingat mati () setelah mengirim header? Header 404 tidak secara otomatis menghentikan pemrosesan, jadi mungkin tampak tidak melakukan apa pun jika ada pemrosesan lebih lanjut yang terjadi.
Tidak baik MENGALIHKAN ke laman 404 Anda, tetapi Anda dapat MENYERTAKAN konten darinya tanpa masalah. Dengan begitu, Anda memiliki laman yang mengirimkan status 404 dengan benar dari URL yang benar, tetapi laman itu juga memiliki "apa yang Anda cari?" halaman untuk pembaca manusia.
sumber
coba letakkan
dalam
.htaccess
file.Lakukan ini untuk kesalahan apa pun tetapi gantikan 404 untuk kesalahan Anda.
sumber
Di Drupal atau Wordpress CMS (dan kemungkinan lainnya), jika Anda mencoba membuat beberapa kode php kustom tampak tidak ada (kecuali beberapa kondisi terpenuhi), berikut ini bekerja dengan baik dengan membuat pengendali 404 CMS mengambil alih:
sumber
Segera setelah baris itu, coba tutup respons menggunakan
exit
ataudie()
atau
sumber
ErrorDocument
, tetapi dari PHP.ErrorDocument
tidak berpengaruh apa pun setelah Anda memasukkan kode PHP. jawaban ini paling tepat menjelaskan kebingungan yang saya hadapi 9 tahun yang lalu$reqpath = strtok("/".trim(substr($_SERVER["REQUEST_URI"], strlen(APP_ROOT)), "/"), "?");
di file page.php Anda. Karena ada skenario di mana salah satu halaman tersebut mengharapkan kueri "nama" dari pengguna.coba ini sekali.
sumber