2015-12-21 115 views
1

我在我的nginx服務器上有一個位置,如/ folder /。在該文件夾中有.jpg文件和.php腳本。NGINX重寫條件問題

我想實現如下:

當用戶訪問一個網址,如:http://mywebsite.com/folder/10-11 nginx的將搜索10-11文件,10-11.png文件,10-11.jpg文件顯示它(如果該文件在服務器上)。這部分工作得很好。

現在,當用戶訪問相同的網址,如果該文件不存在,我希望用戶被重定向到該PHP腳本。

波紋管是nginx配置工作的一部分。該文件夾中的所有圖像文件都像10-10,21-19,90-20等(2位數字 - 2位數字)。

location /app/comics/lqthumb/ { 
       try_files $uri /$uri.png /$uri.jpg; 
} 

其他nginx的部分應該是這樣的:

location /app/comics/lqthumb/ { 
     rewrite ^/app/comics/lqthumb/(.*?)-(.*?)$ /app/comics/lqthumb/thumbgen.php?chapter=$1&page=$2 permanent; 
    } 

的IDEEA是此規則結合在一起。我怎麼做一個if else語句或類似的東西?我已經嘗試了幾種組合,閱讀了很多論壇帖子,甚至從這裏可以找到答案,但我無法使其工作。

如果您有問題,請讓我知道!

回答

1

您可以使用命名的位置來組合這些文件。 try_files的最後一個元素可以調用默認操作來輸入指定位置來處理重寫。

root /path/to/root; 

location /app/comics/lqthumb { 
    try_files $uri $uri.png $uri.jpg @thumbgen; 
} 
location @thumbgen { 
    rewrite ^/app/comics/lqthumb/(.*?)-(.*?)$ /app/comics/lqthumb/thumbgen.php?chapter=$1&page=$2; 
} 
location ~ \.php$ { ... } 

我已刪除了虛假/$uri之前。我假設你有一個調用PHP解釋器的位置,否則,你可以把這些指令放到指定位置。我不確定您是否打算重定向到permanent。沒有標誌時,內部重定向對用戶是透明的。

請參閱try_files documentation

+0

非常感謝。我非常接近,但我做錯了什麼。我在@thumbgen和/ uri之前添加了a /位置,然後a = 404。可能是這個問題! –