Mod-Rewrite

重寫下載 URL,但“另存為”對話框顯示原始 URL

  • September 16, 2014

我的lighttpd配置文件中有以下mod_rewrite指令:

url.rewrite-once = (
 "foo.*$" => "static/foo.pdf",
)

我想分發這樣的 URL:(http://<server>/foo/r=ca2b912或類似的),這樣我就可以在 http 訪問日誌中跟踪連結的來源。

但是,當我輸入http://<server>/foo/r=131ab42時,會顯示“另存為”文件對話框並建議命名文件r=131ab42(至少在使用 firefox 時)。我想讓它foo.pdf作為文件名來保存。這應該獨立於訪問 URL 的工具(即 wget、IE 等都應該將文件另存為foo.pdf)。

我怎樣才能做到這一點?我注意到 firefox 在重新載入 URL 時會更正文件名。

請注意:這是我第一次想使用重寫規則。我試圖自己找到答案,但沒有成功。

你只需要在你的r=ca92b32字元串前面加上一個?(ie: http://<server>/foo/?r=ca93b32)

該字元串將被視為參數而不是文件名,並且不會被視為文件名。

rewrite 是伺服器內部操作;使用者看不到結果(除非您以某種方式手動公開它)。

您可以嘗試Content-Disposition標頭;但最好的方法是修復您的網址(即.../foo.pdf從一開始就有)。您可以使用重定向規則進行遷移。

引用自:https://serverfault.com/questions/624705