ฉันหวังว่าคุณจะสามารถช่วยฉันได้ในเรื่องต่อไปนี้
ฉันมี NGINX Running และต้องการส่งต่อไปยัง .html (หน้าเสมือน) ไปที่ index.php?view=$args โดยไม่ต้องเปลี่ยน URL ซึ่งจะแสดงในแถบที่อยู่ของเบราว์เซอร์ (REQUEST URI)
ฉันลองหลายครั้งแล้ว แต่ทุกครั้งที่ไปที่: example.com/meldung.html NGINX เปลี่ยน URL ของเบราว์เซอร์เป็น: example.com/index.php?view=Meldung แต่นั่นไม่ใช่สิ่งที่ฉันต้องการ
example.com/meldung.html ควรกำหนดเส้นทางภายในไปยัง index.php?view=$1 แต่ไม่ควรอยู่นอกสิ่งที่ผู้ใช้เห็น
ฟัง 80;
รูท /var/www/example.com;
ดัชนี index.html index.htm index.php;
server_name example.com www.example.com
ดัชนี index.html index.htm index.php;
access_log /var/log/nginx/example.com_access.log;
error_log /var/log/nginx/example.com.io_error.log;
ตั้ง $skip_cache 0;
# คำขอ POST และ URL ที่มีสตริงข้อความค้นหาควรไปที่ PHP เสมอ
ถ้า ($request_method = POST) {
ตั้ง $skip_cache 1;
}
ถ้า ($query_string !=" "") {
ตั้ง $skip_cache 1;
}
ที่ตั้ง / {
try_files $uri $uri/ =404;
ตอบสนองทั้งหมด;
ถ้า (!-f $request_filename) {
เขียนใหม่ ^(.*)\.html$ /index.php?view=$1 สุดท้าย;
}
}
ตำแหน่ง ~ \.php$ {
รวมตัวอย่าง/fastcgi-php.conf;
fastcgi_pass ยูนิกซ์:/var/run/php/php5.6-fpm.sock;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
}
บน Apache มันทำงานได้อย่างถูกต้อง:
RewriteRule ^(.*).html$ index.php?view=$1 [L,NC]
แต่ไม่ใช่ใน NGINX