我在 Nginx 中運行一個 WordPress 網站。
為了加載 Webp 檔案,使用了以下 Rewight 規則。
當其中只有一個代碼時,它可以正常作業。
location ~ /wp-content/(?<path>. )\.(?<ext>jpe?g|png|gif)$ {
if ($http_accept !~* "image/webp") {
break;
}
add_header Vary Accept;
expires 365d;
try_files /wp-content/uploads-webpc/$path.$ext.webp $uri =404;
}
location ~ /wp-content/(?<path>. )\.(?<ext>jpe?g|png|gif)$ {
if ($http_accept !~* "image/webp") {
break;
}
add_header Vary Accept;
expires 365d;
try_files /wp-content/$path.$ext.webp $uri =404;
}
但是我的 webp 檔案分為兩條路徑。
/wp-content/$path.$ext.webp
/wp-content/uploads-webpc/$path.$ext.webp
如果我將這兩個代碼同時粘貼到 nginx 的 site.conf 中,它將不起作用。
我想知道如何將這兩者合二為一。
謝謝你。
uj5u.com熱心網友回復:
我不確定你想用那if ($http_accept !~* "image/webp") { break; }部分實作什么。如果您認為這是退出當前位置并搜索下一個位置的一種方式,那您就錯了。該break指令將停止處理來自 的任何進一步指令ngx_http_rewrite_module(但您沒有更多指令,因此它根本不執行任何操作)并且您的配置將使用 WEBP 檔案為請求提供服務,無論客戶端瀏覽器是否支持它. Accept如果HTTP 標頭包含字串,則提供 WEBP 檔案的經典方法image/webp是使用以下map塊:
map $http_accept $suffix {
~image/webp .webp;
default '';
}
server {
...
location ~ \.(jpe?g|png|gif)$ {
add_header Vary Accept;
try_files $uri$suffix $uri =404;
}
...
}
根據您要首先檢查的這兩個檔案中的哪一個,您應該使用
try_files /wp-content/$path.$ext$suffix /wp-content/uploads-webpc/$path.$ext$suffix $uri =404
要么
try_files /wp-content/uploads-webpc/$path.$ext$suffix /wp-content/$path.$ext$suffix $uri =404
和你的問題只有一個location街區。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427089.html
上一篇:python-如何在Python中將串列元素單獨與AND/ALL/多個模式匹配-list(),re.match()?
