我mod_rewrite
的lighttpd配置文件:
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
从一开始就修复)。您可以使用重定向规则进行迁移。