4

我需要根据用户代理提供不同的文件。这是一项非常基本的要求,比提供文件更上一层楼。

标准答案似乎是,使用声明if

if但是,不应该使用语句显然是众所周知的。

所以此时的答案似乎是 Apache,但我告诉我的老板 nginx 是一个可用的产品。有什么建议么?

4

1 回答 1

2

如果你仔细阅读if is evil,你会注意到它有以下引用:

The only 100% safe things which may be done inside if in location context are:
return ...;
rewrite ... last; 

Anything else may possibly cause unpredictable behaviour, including potential
SIGSEGV. 

所以...

的邪恶if只适用于在一个位置块内使用

location-block 内,有两个,并且只有两个,保证了一个if块的保存用途:

  • 一个持有孤独return ...;声明的人
  • 一个持有孤独rewrite ... last;声明的人
  • (请注意,空if块也可能导致问题)

if在位置块中的非保证保存使用可能有效,但需要进行测试

于 2013-02-07T17:06:06.077 回答