我注意到,当我使用 nginx 创建 301 重定向(重写,返回 301)时,我得到以下 HTML 正文:
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
我想摆脱 Nginx 生成的 301 重定向的 HTML 主体。Facebook 和 Twitter 很久以前就摆脱了 301 重定向的 HTML 主体。这是一种在 301 重定向期间节省一些未经请求的字节的方法。
因此,我猜想可以手动创建 301 重定向的 HTTP 标头字段,而无需调用重写或返回 301。如果我在 nginx 的位置块中调用“重写”或“返回 301”,它也会生成我不想要的 HTML 正文。我无法修改配置文件,因为我使用 Plesk。Nginx 配置文件是自动生成的。
因此,我猜测可以使用 NGINX 在位置块中手动创建以下 HTTP 标头字段:
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Tue, 15 Sep 2020 17:48:13 GMT
Content-Type: text/html
Content-Length: 162
Connection: keep-alive
Location: https://bloup.com/
你会怎么做?
答案1
在 Plesk 中,我明白我必须将重定向封装在位置/块中。
因此,当我自己输入时:
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
我有
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
然后,如果我输入:
location / {
if ($scheme = http) {
return 301 https://$server_name$request_uri;
}
}
我摆脱了通过 Nginx 进行 301 重定向期间返回的 HTML 主体响应。