我一直在試圖圍繞今天nginx的重寫,並已看過一些問題,讓我的頭/答案在這裏,以及仔細閱讀幾個導遊我也碰到過。簡單nginx的重寫問題
雖然大多數事情來找我很自然地,我只是不抓它,也許是因爲我缺乏經驗與任何形式的正則表達式。
我有一個的download.php腳本,它覆蓋了我的nginx的頭和強制瀏覽器使用「另存爲」對話框,而不是打開一個新頁面進行下載。
它完美,但是我想隱藏用戶的腳本本身的URL。
具體而言,我想改變這個網址:
http://www.example.com/scripts/download.php?id=http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg
這樣把它簡單地表現爲id
GET參數的用戶:
http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg
但是對於我,我的生活似乎無法使其工作。
希望有人能來救援。提前致謝。
編輯:
只是一些進一步明晰添加到我的問題......理想的解決方案將是我能在我的web應用程序像這樣的鏈接:
http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg?dl=1
有nginx的拿起它具有DL = 1,是在/ images /目錄,然後重寫它使用的下載腳本:
http://www.example.com/scripts/download.php?id=http://www.example.com/images/0/1/fullsize/96698298450ca01a60875e_34.jpg
通過這種方式,當圖像僅被查看時,他們正在瀏覽腳本,並且只有當dl = 1 param時,imges纔會被重寫並通過腳本路由。
感謝myanimal,您的幫助真的很感激。您的第一個解決方案非常接近我需要做的事情,但它只需要應用於我指定的鏈接,而不是將所有/ images/traffic路由到腳本。理想情況下,如果我可以簡單地在應用程序的鏈接末尾添加?dl = 1參數,那麼nginx會選擇並重寫那些鏈接(我在腳本本身中執行大量安全性),那麼這將是絕對完美的解決方案。非常感謝你的努力,但是,我終於走上了正軌。看到我上面的編輯... – gordyr
@gordyr,我更新了答案,只適用於具有'id = 1'作爲查詢字符串一個參數的URL。 – myanimal
太棒了,我不能夠感謝你。您的答案不僅能夠完美地解決我的問題,而且還讓我更好地理解nginx重寫如何在此過程中工作。乾杯! – gordyr