Apache-2.4
VirtualHosts 上的 Apache RewriteRule 不適用於組擷取正則表達式
我需要創建一個
RewriteRule
將 URL 路徑委託/tdg/image.jpg?mode=crop&width=300&height=300
給本地代理。代理需要將給定的 URL 轉換為以下格式。
http://localhost:8888/unsafe/300x300/smart/tdg/image.jpg
我首先嘗試使用
ProxyPassMatch
apache 指令,但無法從查詢字元串中檢索寬度和高度數據。ProxyRequests On ProxyPreserveHost On ProxyPassMatch ^\/(tdg.+\.(?:png|jpeg|jpg|gif))\?mode=crop.+width=(d+)&height=(d+) http://localhost:8888/unsafe/$2x$3/smart/$1
我也試過
RewriteRule
RewriteEngine On RewriteRule ^\/(tdg.+\.(?:png|jpeg|jpg|gif))\?mode=crop.+width=(d+)&height=(d+) http://localhost:8888/unsafe/$2x$3/smart/$1
在這兩種情況下,代理的結果 URL
http://localhost:8888/unsafe/x/smart/$1
應該在哪裡http://localhost:8888/unsafe/300x300/smart/tdg/image.jpg
我不知道為什麼我不能使用正則表達式語法從查詢字元串中獲取
width
and值。height``group
該
RewriteRule
指令僅匹配路徑組件,不包括查詢字元串。嘗試:RewriteEngine On RewriteCond %{QUERY_STRING} mode=crop.+width=(\d+)&height=(\d+) RewriteRule ^\/(tdg.+\.(?:png|jpeg|jpg|gif)) http://localhost:8888/unsafe/%1x%2/smart/$1 [P]
請注意使用
RewriteCond
. 為了使用來自這兩個地方的反向引用,對於來自的那些使用 %N,RewriteCond
對於RewriteRule
.