Nginx相当于Apache ErrorDocument 410

时间:2017-03-10 01:39:03

标签: nginx http-status-code-410

对于Apache,我们有时会使用410 GONE http状态代码来指示资源已经消失到爬虫等,并且还有人类访问者的html页面。

我们要么使用类似的东西:

var apiEndpoint = new URL("https://www.googleapis.com/drive/v2/files"),
    params = {q: "some stuff", otherParams: "lol"}

// assemble GET querystring in a nice way
Object.keys(params).forEach(function(key) {
   apiEndpoint.searchParams.append(key, params[key]);
});

// go and fetch! (explicit HTTP header options optional but good practice)
fetch(apiEndpoint , {
                 method: 'GET',
                 mode: 'cors',
                 redirect: 'follow',
                 headers: new Headers({
                     'Content-Type': 'application/json'
                 })
             });
                 .then(function (responseBody) {
                     return responseBody.json();
                 })
                 .then(function (responseObj) {
                     for(i=0; i<responseObj.items.length; i++) {
                         asyncDeleteDriveItem(responseObj.items[i].id);
                     }
                 });

        });

function asyncDeleteDriveItem() {/* ... */}

服务器提供410状态代码,并向浏览器访问者显示'ourmovedpage'地址。

借助Nginx,我尝试了

ErrorDocument 410 ourmovedpage.html
...
Redirect gone /GONECONTENT

但在测试中,Chrome似乎显示了302重定向状态代码,而不是我之后的410。

有没有人为Nginx提出类似的东西发送410但是还为人类访问者返回了一个不错的页面?

1 个答案:

答案 0 :(得分:0)

通过指定完整的URL nginx被迫执行重定向。您应该指定相对于当前服务器的人类可读页面。

location = /gonecontent-address {
    error_page 404 =410 /ourmovedpage.html;
}