Webserver
重寫規則在 NGINX 中不起作用
考慮如下所示的 URL:
http://myDomain.tld/anAddress/myFile.pdf?X=zzz&Y=kkk
我怎樣才能擁有它:
http://myDomain.tld/anAddress/myFile.pdf/zzz/kkk
我想同時擺脫
?X
和&Y
。如果有人讓我知道我應該使用什麼規則,我會很高興。我的伺服器塊:
server { listen 80; server_name _; location / { root /my/root/path; rewrite ^/(.*)pdf/(.*)/(.*)$ /$1?md5=$2&expires=$3 break; secure_link $arg_md5,$arg_expires; autoindex on; secure_link_md5 "$secure_link_expires$uri aWord"; if ($secure_link = "") { return 403; } if ($secure_link = "0") { return 410; } } }
**目的:**更準確地說,我的網址是這樣的:
http://myDomain.tld/anAddress/myFile.pdf?md5=So1Me2Ha3Sh4&expires=123456789
我希望它像:
http://myDomain.tld/anAddress/myFile.pdf/So1Me2Ha3Sh4/123456789
在Apache中,我們可以使用:
RewriteRule ^(.*)pdf/(.*)/(.*)$ $1?md5=$2&expires=$3
當我嘗試將其轉換為 NGINX 形式時,它變成了:
rewrite ^/(.*)pdf/(.*)/(.*)$ /$1?md5=$2&expires=$3 break;
但它沒有用。
在我看來,您沒有擷取文件名的最後三個字元(即
您應該嘗試移動
)
, 以便將$1
:rewrite ^/(.*pdf)/(.*)/(.*)$ /$1?md5=$2&expires=$3 break;
編輯:作為對您的評論的回應,您可以添加一個與您希望拒絕的 URI 匹配的新位置塊,例如:
location ~* \.pdf$ { return 403; }