gpt4 book ai didi

redirect - nginx 静态索引重定向

转载 作者:行者123 更新时间:2023-12-02 19:28:13 25 4
gpt4 key购买 nike

这看起来很荒谬,但我在一个多小时的搜索中没有找到有效的答案。

我有一个运行 nginx 的静态网站(恰好位于 Varnish 后面)。索引文件称为index.html。我想将实际访问 URL mydomain.com/index.html 的任何人重定向回 mydomain.com

这是我的站点 nginx 配置:

server {
listen 8080;
server_name www.mydomain.com;
port_in_redirect off;

location / {
root /usr/share/nginx/www.mydomain.com/public;
index index.html;
}

rewrite /index.html http://www.mydomain.com/ permanent;
}

http://www.mydomain.com/index.html 按预期响应 301,位置为 http://www.mydomain。 com/ 但不幸的是 http://www.mydomain.com/ 也提供 301 返回自身,因此我们得到了一个重定向循环。

如果index.html确实在请求中,我如何告诉nginx只提供301?

最佳答案

添加一个新的位置 block 来处理您的主页,并使用 try_files 指令(而不是“index index.html;”)直接查找index.html 文件。请注意,try_files 要求您至少输入 2 个选择。所以我把同一个文件放了两次。

location = / {
root /usr/share/nginx/www.mydomain.com/public;
try_files /index.html /index.html;
}

根据我的实验,看起来不错:

curl -iL http://www.mydomain.com/index.html
HTTP/1.1 301 Moved Permanently
Server: nginx
Date: Sat, 16 Mar 2013 09:07:27 GMT
Content-Type: text/html
Content-Length: 178
Connection: keep-alive
Location: http://www.mydomain.com/

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 16 Mar 2013 09:07:27 GMT
Content-Type: text/html
Content-Length: 4
Last-Modified: Sat, 16 Mar 2013 08:05:47 GMT
Connection: keep-alive
Accept-Ranges: bytes

[更新]重定向循环的根本原因是“index”指令,它触发nginx再次进行另一轮位置匹配。这就是位置 block 之外的重写规则再次执行的方式,从而导致循环。所以“index”指令就像“rewrite...last;”指示。您不希望出现这种情况。

诀窍是不再触发另一个位置匹配。 try_files 可以有效地做到这一点。这就是为什么我在原来的答案中选择了它。但是,如果您愿意,另一个简单的修复方法是替换

  index index.html;

  rewrite ^/$ /index.html break;

在原来的“location/” block 内。这个“重写...中断”;指令将使 nginx 保持在同一位置 block 内,有效地停止循环。但是,这种方法的副作用是您会失去“index”指令提供的功能。

[更新 2]

实际上,index指令在rewrite指令之后执行。所以下面的方法也有效。请注意,我刚刚添加了重写...break;线。如果请求uri为“/”,nginx首先从重写规则中查找现有文件/index.html。因此,该请求永远不会触发索引指令。因此,这两个指令可以一起工作。

  location / {
root /usr/share/nginx/www.mydomain.com/public;
index index.html;
rewrite ^/$ /index.html break;
}

关于redirect - nginx 静态索引重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com