Mengubah hala Data POST dalam PHP dengan .htaccess
Soalan:
Bolehkah data POST menjadi diserahkan kepada alamat palsu yang mengubah hala ke indeks halaman?
Senario:
Tapak web menggunakan fail .htaccess untuk mengubah hala semua permintaan ke index.php. Walau bagaimanapun, apabila menggunakan borang dengan kaedah POST untuk menyerahkan data ke alamat palsu, data POST hilang semasa pengalihan semula.
Analisis:
Lalai .htaccess peraturan yang digunakan dalam senario ini ialah:
RewriteRule send-mail index.php?send-mail [NC,L]
Peraturan ini mengubah hala permintaan ke index.php dengan betul, tetapi bendera [L] (terakhir) menghentikan pemprosesan selanjutnya dan membuang sebarang data POST.
Penyelesaian:
Untuk mengekalkan data POST semasa pengalihan, tukar bendera [L] kepada [P] (proksi):
RewriteRule send-mail index.php?send-mail [NC,P]
Penjelasan:
Bendera [P] bertindak serupa dengan [L] dengan menghentikan pemprosesan peraturan, tetapi ia juga mengarahkan modul proksi untuk mengendalikan permintaan secara utuh, termasuk sebarang data POST.
Tambahan Nota:
# serve files and dirs if they exist please, otherwise send to index RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule . index.php
Atas ialah kandungan terperinci Bagaimana untuk Memelihara Data POST Semasa Ubah Arah dalam PHP dengan .htaccess?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!