ใน Nginx ก็มีความสามารถในการ rewrite เช่นเดียวกับใน Apache, Lighttpd และ Cherokee แต่ต่างกันคือไม่มีการใช้งานผ่าน .htaccess เท่านั้น ซึ่งโดยปกติเราจะสามารถเขียน rewrite rule ไว้ใน config file ของแต่ละ vhost เท่านั้นการ rewrite สามารถเขียนได้โดย เขียนไว้ภายใน location section โดยการเขียนจะเป็น Syntax ทั่วไปของ perl และ posix ใน UNIX/Linux เท่านั้น ซึ่งคนที่คุ้นเคยสามารถเขียนได้ทันที ตัวอย่างเช่น
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?q=$1 last;
}
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME /home/www/mydomain.com$fastcgi_script_name;
include fastcgi_params;
}จากตัวอย่างจะเป็นการส่งค่าที่ได้ไปกับตัวแปร q ผ่าน querystring เราก็สามารถตรวจสอบค่าที่ส่งมาได้เพื่อทำการแสดงผลข้อมูลได้ตามต้องการ
location / {
root /home/www/mydomain.com;
index index.html index.htm index.php;
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php last;
}
}
location ~ \.php$ {
fastcgi_param SCRIPT_FILENAME /home/www/mydomain.com$fastcgi_script_name;
include fastcgi_params;
}
จากตัวอย่างนี้เราสามารถเรียกดูค่าที่ส่งมาได้จาก $_SERVER["REQUEST_URI"] ของ php ได้ทันทีโดยไม่เสียตัวแปร q เหมื่อนตัวอย่างข้างบน
เขียนเมื่อ 2009.11.01 โดย
Sheroku