文件及目錄匹配,其中:
* -f和!-f用來判斷是否存在文件
* -d和!-d用來判斷是否存在目錄
* -e和!-e用來判斷是否存在文件或目錄
* -x和!-x用來判斷文件是否可執行
樣例 : 判斷訪問的圖片是否存在,不存在跳轉到另外的域名
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|thumb) { root /data/wwwroot/bbs.xxx.com; expires 10d; if (!-e $request_filename) { rewrite ^/data/attachment/forum/(.*)$ http://img.xxx.com/forum/$1 permanent; } }
這里會遇到一個問題:
nginx中重寫rewrite的語法錯誤[emerg] unknown directive “if($host!=”
Nginx語法檢測特別嚴格,if和后面括號以及變量等號這些元素都要有空格,所以正確的寫法是:
if ( $host != 'www.0xcafebaby.com' ){ rewrite ^(.*)$ http://www.0xcafebaby.com$1 permanent; }
用^代替空格看起來更清晰:
if^(^$host^!=^'www.0xcafebaby.com'^){
反正多打幾個空格就是了,所以nginx中的中文配置文件解釋可參考:
Nginx配置文件中文注釋詳解 如果想了解更多nginx的rewrite配置,可參考:
nginx rewrite 的 參數大全