Nginx 没有正确重定向
Nginx not redirecting properly
我有点困惑,我真的认为这将是一个简单的 5 分钟任务,但不是。我按照文档进行了重定向,但我无法使其正常工作,它只是附加了新 url 的倍数(不确定有多少,但我数过 [= 的边缘至少有 10 个20=] bar) 到原来的那个。这是我的服务器块配置:
server {
listen 80;
server_name old.i.p.address;
return 301 new.i.p.address/redirect_page/;
location ~ /si/home/0/ {
return 301 /si/home/;
}
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/rob/pcc_django/staticfiles/;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
抱歉,如果缩进错误,它在我的机器上的格式是正确的,我还没有弄清楚如何在这个网站上正确地保持代码块的格式。
我尝试了多个版本,在新 IP 地址的开头有和没有“http://”,我也试过有和没有“/homepage”。我也尝试过使用“重写”,因为最初我只是想要一个永久重定向,但这是唯一允许 ngingx 服务器启动的迭代,它在 url 栏中给出了奇怪的结果:
old.i.p.address/homepage/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/...etc ad infinitum
请问我该如何解决这个问题?
301 重定向将缓存在浏览器中,您可以clear the browser cache,然后重试return 301 http://new.i.p.address/redirect_page/;
。
浏览器将 new.i.p.address/redirect_page/
字符串视为同一服务器上的相对 URI,从而在每次迭代中为您提供无限循环并连接 new.i.p.address/redirect_page/
部分。例如,如果您有一个 return 301 /new.i.p.address/redirect_page/;
规则,该字符串将被视为绝对 URI,在每次迭代中为您提供相同的地址。唯一正确的方法是使用 http://
(或 https://
)前缀。正如@emptyhua 所说,HTTP 301 永久重定向由浏览器缓存,因此您应该清除缓存或从隐身模式尝试 window.
我有点困惑,我真的认为这将是一个简单的 5 分钟任务,但不是。我按照文档进行了重定向,但我无法使其正常工作,它只是附加了新 url 的倍数(不确定有多少,但我数过 [= 的边缘至少有 10 个20=] bar) 到原来的那个。这是我的服务器块配置:
server {
listen 80;
server_name old.i.p.address;
return 301 new.i.p.address/redirect_page/;
location ~ /si/home/0/ {
return 301 /si/home/;
}
location = /favicon.ico { access_log off; log_not_found off; }
location /static {
alias /home/rob/pcc_django/staticfiles/;
}
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://unix:/run/gunicorn.sock;
}
}
抱歉,如果缩进错误,它在我的机器上的格式是正确的,我还没有弄清楚如何在这个网站上正确地保持代码块的格式。
我尝试了多个版本,在新 IP 地址的开头有和没有“http://”,我也试过有和没有“/homepage”。我也尝试过使用“重写”,因为最初我只是想要一个永久重定向,但这是唯一允许 ngingx 服务器启动的迭代,它在 url 栏中给出了奇怪的结果:
old.i.p.address/homepage/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/...etc ad infinitum
请问我该如何解决这个问题?
301 重定向将缓存在浏览器中,您可以clear the browser cache,然后重试return 301 http://new.i.p.address/redirect_page/;
。
浏览器将 new.i.p.address/redirect_page/
字符串视为同一服务器上的相对 URI,从而在每次迭代中为您提供无限循环并连接 new.i.p.address/redirect_page/
部分。例如,如果您有一个 return 301 /new.i.p.address/redirect_page/;
规则,该字符串将被视为绝对 URI,在每次迭代中为您提供相同的地址。唯一正确的方法是使用 http://
(或 https://
)前缀。正如@emptyhua 所说,HTTP 301 永久重定向由浏览器缓存,因此您应该清除缓存或从隐身模式尝试 window.