วิธีที่แนะนำอาจจะใช้ a map
, เพราะตัวแปรเหล่านี้จะถูกประเมินเมื่อมีการใช้งานเท่านั้น
นอกจากนี้ยังมีการใช้งานreturn 301 ...
ที่ต้องการมากกว่าการเขียนใหม่เพราะไม่มีการรวบรวมการแสดงออกปกติ
นี่คือตัวอย่างของการที่ host และ user-agent เป็นสตริงที่ต่อกันถูกเปรียบเทียบกับ regex เดี่ยว:
map "$host:$http_user_agent" $my_domain_map_host {
default 0;
"~*^www.domain.com:Agent.*$" 1;
}
server {
if ($my_domain_map_host) {
return 302 http://www.domain2.com$request_uri;
}
}
และอาจมีความยืดหยุ่นมากขึ้นตัวอย่างเช่นหากมีโดเมนที่เกี่ยวข้องไม่เกิน 2 โดเมน
ที่นี่เรา map www.domain.com
กับตัวแทนผู้ใช้เริ่มต้นด้วยการAgent
ไปhttp://www.domain2.com
และwww.domain2.com
กับที่แน่นอน user-agent Other Agent
เพื่อhttp://www.domain3.com
:
map "$host:$http_user_agent" $my_domain_map_host {
default 0;
"~*^www.domain.com:Agent.*$" http://www.domain2.com;
"~*^www.domain2.com:Other Agent$" http://www.domain3.com;
}
server {
if ($my_domain_map_host) {
return 302 $my_domain_map_host$request_uri;
}
}
NBคุณจะต้องใช้ nginx 0.9.0 หรือสูงกว่าเพื่อให้สตริงที่ต่อกันในแผนที่ทำงานได้