[英]Check if file exists on Nginx using regex
我正在嘗試將一些htaccess文件轉換為Nginx vhost配置,而我遇到了麻煩:
RewriteCond %{DOCUMENT_ROOT}/img/id_$1_$2 -f
RewriteRule ^id/(.+)/(.+)$ img/id_$1_$2 [NC,L]
如您所見,此條件使用正則表達式檢查文件是否存在,以通過輸入的URL動態生成文件名。
以下nginx指令可以正確重寫,但不會檢查文件bofore:
rewrite ^/id/(.+)/(.+)$ /img/id_$1_$2 break;
我只想在文件確實存在的情況下進行此重寫,否則不進行另一次重寫。
所有的想法可能會有所幫助。 非常感謝。
try_files $uri $uri/ @what_to_do;
在此處,定義一個新位置,如下所示:
location @what_to_do {
rewrite ^/id/(.+)/(.+)$ /img/id_$1_$2 break;
}
try_files
指令將嘗試在$ uri然后在$ uri /處查找文件,其中$ uri是URL中指定的路徑。 如果失敗,它將進入重寫所在的@what_to_do位置塊。
優點:這還使您可以將重寫規則與其余服務器配置巧妙地區分開!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.