在我的网站上,我有一个下载页面。当用户点击下载按钮时,他们会到达“感谢您下载”页面。 2秒后,此页面将重定向到实际的物理文件。
所以它有点像:
下载页面:http://example.com/download
用户点击“下载”:http://example.com/download/getit
2秒后,页面重定向到:http://example.com/uploads/files/file_to_download_v2.1.zip
目前,当我重定向到可下载文件时,我使用HTTP 301代码(永久移动)。但是,我不认为这是正确的代码,according to the standard:
已为所请求的资源分配了一个新的永久URI ,以后对此资源的任何引用应该使用返回的URI之一。 [...] 此响应可缓存,除非另有说明。
然而,页面“download / getit”尚未分配新的URI,它只是重定向到不同的资源,但它自己的URI没有改变。此外,不应缓存响应,因为下载的文件可能会在发布新版本时发生更改。
那么在这种情况下什么是正确的HTTP代码?
答案 0 :(得分:2)
如果您返回HTTP代码,页面会立即重定向 ,无论您使用301(永久移动)还是302(找到)(否则完全适合您的用例)。如果您想在2秒后重定向 ,则需要使用以下方法之一:
Refresh
HTTP标头
Refresh: 2; url=http://example.com/uploads/files/file_to_download_v2.1.zip
页面内容中的HTML meta-equiv相同:
<meta http-equiv="Refresh" content="2; url=http://example.com/uploads/files/file_to_download_v2.1.zip" />
JavaScript,但这可能对所有人都不起作用,所以我会避免这种情况。
答案 1 :(得分:1)
找到HTTP 302
这样,您不会指示资源已移动,只是可以从其他位置检索。