重写下载URL,但“保存-as”对话框显示原始URL

我在我的lighttpdconfiguration文件中有以下mod_rewrite指令:

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

我想http://<server>/foo/r=ca2b912这样的URL: http://<server>/foo/r=ca2b912 (或类似),以便我可以跟踪http访问日志中链接的来源。

当我inputhttp://<server>/foo/r=131ab42时,会显示“save-as”文件对话框,并build议命名文件r=131ab42 (至less在使用firefox时)。 我想build议foo.pdf作为文件名保存。 这应该独立于访问该URL的工具(即wget,IE等应该都将该文件保存为foo.pdf )。

我怎样才能做到这一点? 我注意到,Firefox重新加载URL时更正了文件名。

请注意 :这是我第一次使用重写规则。 我试图自己find答案,但没有成功。

你只需要在你的r=ca92b32string前添加一个? (即: http://<server>/foo/?r=ca93b32

该string将被视为一个参数,而不是一个文件名,不会被视为一个文件名。

重写是服务器内部操作; 用户看不到结果(除非以某种方式手动公开)。

您可以尝试Content-Disposition标题; 但最好的方法是修复您的url(即从一开始就有.../foo.pdf )。 您可以使用redirect规则进行迁移。