簡體   English   中英

使用正則表達式檢查Nginx上是否存在文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM