重写下载 URL,但“另存为”对话框显示原始 URL

重写下载 URL,但“另存为”对话框显示原始 URL

mod_rewritelighttpd配置文件:

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 时会更正文件名。

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

答案1

您只需要r=ca92b32在字符串前面加上前缀?(即http://<server>/foo/?r=ca93b32:)

该字符串将被视为参数而不是文件名,并且不会被视为文件名。

答案2

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

您可以尝试内容处置标头;但最好的方法是修复您的 URL(即.../foo.pdf从一开始就修复)。您可以使用重定向规则进行迁移。

相关内容