Rumah > Soal Jawab > teks badan
Saya melihat sebelum ini MOOC menggunakan nginx untuk menggunakan sumber statik, jadi saya ingin mencuba menggunakan ngjinx untuk menggunakan sumber saya. Sekarang kita memerlukan soalan berikut:
/course/list
,我只能使用list.html
,我想让每个连接都不会出现.html
selepas URL Adakah ini menulis semula URL, atau adakah ia dikonfigurasikan dengan lokasi?
, tetapi ia tidak sepadan, jadi ia tidak dimajukan ke pelayan proksi, tetapi halaman statik dipaparkan seperti biasa. /test/test.html
untuk mendapatkan data yang betul. /products/getproducts/2
,确实转发到了:localhost:8086/products/getproducts/2
大家讲道理2017-05-16 17:25:54
Soalan pertama:
Nginx menggunakan arahan try_files untuk mengimport data permintaan dengan mudah ke dalam pengawal bahagian hadapan rangka kerja seperti index.php:
location {
try_files $uri $uri/ /index.php?$args;
}
Pengawal bahagian hadapan index.php boleh menggunakan $_SERVER['REQUEST_URI'] untuk mendapatkan rentetan parameter URL /course/list Jika terdapat parameter kemudian, seperti /course/list?page=2&tag=mysql, anda boleh menggunakan $_SERVER ['QUERY_STRING'] Dapatkan halaman rentetan pertanyaan=2&tag=mysql, kemudian urldecode sendiri dan gunakan explode untuk memisahkan rentetan dengan & untuk mendapatkan tatasusunan parameter yang serupa dengan $_GET Anda juga boleh menggunakan $_GET terus dapatkan tatasusunan parameter.
Ringkasnya, index.php pintu masuk program dan program di dalamnya yang memutuskan sama ada untuk memuatkan fail statik HTML dan mengembalikannya, atau menyambung ke pangkalan data untuk diproses.
Jika anda mahu Nginx menentukan sama ada cache HTML dipukul, anda boleh mengkonfigurasinya seperti ini:
location / {
try_files $uri $uri/ /html$uri.html /index.php?$args;
}
Sebagai contoh, apabila mengakses /post/1024, Nginx akan cuba mengakses fail berikut mengikut susunan yang diberikan oleh try_files:
/post/1024 ($uri mewakili fail)
/post/1024/ ($uri/ mewakili direktori)
/html/post/1024.html (/html$uri.html mewakili cache statik HTML anda)
Jika kedua-duanya tidak wujud, maklumat URI bersama-sama dengan parameter akan diserahkan kepada index.php untuk diproses ( /index.php?$args terakhir menyatakan maksud ini).
習慣沉默2017-05-16 17:25:54
Soalan 1, Anda boleh menggunakan kaedah tulis semula, contohnya:
rewrite "^/(course/.*)/?" .html last;
Perlu diingat bahawa hanya semua permintaan bermula dengan kursus akan ditulis semula
xxx.com/course/list -> xxx.com/course/list.html
xxx.com/course/list/sub -> xxx.com/course/list/sub.html
Soalan 2
Saya rasa seperti perlu ada konfigurasi lokasi lain Jika sesuai, siarkan keseluruhan konfigurasi nginx