Saya mencoba untuk menambahkan pernyataan kondisional menggunakan direktif If Apache dalam file .htaccess saya.
Saya telah mereferensikan halaman ini http://httpd.apache.org/docs/trunk/mod/core.html#jika tetapi tidak terlalu banyak menguraikan / memberikan banyak contoh. Dua contoh tidak lengkap yang diberikannya adalah:
<Jika% {REQUEST_METHOD} DALAM DAPATKAN, KEPALA, OPSI>
dan
<Jika "$ req {Host} = ''">
Jadi saya sudah mencoba menambahkan ini ke file .htaccess saya:
<Jika% {SERVER_PORT} DALAM MENDAPATKAN, KEPALA, OPSI> # belum ada di sini </If>
Tapi saya terus mendapatkan Kesalahan 500 ketika saya mencoba dan memuat halaman. Ini pada instalasi lokal saya, dan sebelumnya berfungsi dengan baik (atau jika saya menghapus kode itu). Saya percaya saya telah AllowOverride All
mengatur secara global, dan konteks untuk direktif If harus membiarkannya ada di .htaccess ("Konteks: konfigurasi server, virtual host, direktori, .htaccess").
Dapatkah seseorang memberi saya beberapa contoh tentang bagaimana menggunakan arahan <If> dengan benar, atau beberapa petunjuk mengapa itu tidak bekerja untuk saya?
Terima kasih!
SERVER_PORT
masukGET,HEAD,OPTIONS
tidak masuk akal (SERVER_PORT
akan menjadi nomor port nomor tempat permintaan diterima).Jawaban:
The
<If>
direktif ini hanya tersedia di Apache 2.4+ dan tidak 2,2 atau sebelumnya.http://httpd.apache.org/docs/2.4/mod/core.html#if
Dokumentasi tidak ada dalam 2.2:
http://httpd.apache.org/docs/2.2/mod/core.html#if
sumber
<If>
hanya tersedia di Apache 2.4+, jadi pertama-tama pastikan bahwa Anda memiliki versi itu.Contohnya
Alternatif untuk
<If>
Ada beberapa solusi lain untuk melakukan pernyataan bersyarat di Apache 2.2 jika Anda masih terjebak dengan itu.
Anda dapat mengatur variabel lingkungan melalui:
SetEnvIf
RewriteMatch
Kemudian Anda dapat melakukan pernyataan kondisional menggunakan
Contoh:
sumber
<IfDefine>
direktif hanya parse saat startup danparameter-name
hanya dapat lewat dengan prompt perintah menggunakanhttpd -Dx=y