nginx 判斷訪問文件或目錄不存在rewrite


文件及目錄匹配,其中:
* -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 的 參數大全


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM