Nginx
Nginx 重寫規則 ‘^/(a-z0−9一種−和0−9a-z0-9{32}).png$’ 不工作(用於在 Apache 上工作)
我有這些重寫規則(我都嘗試過,但都無濟於事):
location ~* "^/([a-z0-9]{32})\.png$" { rewrite ^ /index.php?page=log&id=$1 last; }
和
location ~* "/(?<hash>[a-z0-9]{32})\.png" { rewrite ^ /index.php?page=log&id=$hash; }
和
location / { try_files $uri $uri/ @rewrites; } location @rewrites { rewrite "^/([a-zA-Z0-9]{32})\.png$" /index.php?page=log&id=$1 last; #... }
基本上,我希望 URL
http://example.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.png
將參數實際傳遞給我的index.php
腳本,並且在腳本中,我得到了:$db->save_hash($_GET['id']); header('Content-type: image/png'); readfile('images/beacon.png'); break;
但是 nginx 給了我一個“未找到”,但其他重寫工作正常。是什麼賦予了?
根據
location
指令如何工作的 nginx 文件:位置可以由前綴字元串或正則表達式定義。… 正則表達式的搜尋在第一次匹配時終止,並使用相應的配置。
根據您自己對這個問題的回答中的附加資訊,您似乎打算在同一時間同時應用多個位置指令,根據明確的文件,這是明確不允許的。
請記住,nginx 在設計上更快更乾淨。所以,不要指望怪癖!