Nginx try_files 默认不工作 index.html
Nginx try_files not working for default index.html
我正在使用 nginx 的 $geoip_country_code 模块根据 IP 重定向用户。我的配置代码如下-
server {
listen 80;
gzip on;
server_name example.com;
root html/example;
location / {
index index.html;
try_files /$geoip_country_code/index.html /index.html;
}
location ~* \.(gif|jpg|jpeg|png|js|css)$ { }
}
我的想法是根据我已本地化的国家/地区重定向用户,否则用户将转到默认索引,即对其他所有人通用。当我在我的国家的浏览器中打开它时,它工作得很好,因为我已经为它本地化了。但是当从不同的国家打开时它显示内部服务器错误。它不会默认索引页。
有人可以指出我做错了什么吗?
try_files
语句的最后一个元素是默认操作,它是 URI 或响应代码。 /index.html
开始搜索新的 location
来处理请求,并在开始时返回,因此您有一个重定向循环。
您可以通过将 /index.html
改为 file 术语来解决问题。例如:
try_files /$geoip_country_code/index.html /index.html =404;
=404
永远不会被执行,因为/index.html
一直存在。
就个人而言,我会使用通用解决方案:
try_files /$geoip_country_code$uri $uri /index.html;
有关更多信息,请参阅 this document。
我正在使用 nginx 的 $geoip_country_code 模块根据 IP 重定向用户。我的配置代码如下-
server {
listen 80;
gzip on;
server_name example.com;
root html/example;
location / {
index index.html;
try_files /$geoip_country_code/index.html /index.html;
}
location ~* \.(gif|jpg|jpeg|png|js|css)$ { }
}
我的想法是根据我已本地化的国家/地区重定向用户,否则用户将转到默认索引,即对其他所有人通用。当我在我的国家的浏览器中打开它时,它工作得很好,因为我已经为它本地化了。但是当从不同的国家打开时它显示内部服务器错误。它不会默认索引页。
有人可以指出我做错了什么吗?
try_files
语句的最后一个元素是默认操作,它是 URI 或响应代码。 /index.html
开始搜索新的 location
来处理请求,并在开始时返回,因此您有一个重定向循环。
您可以通过将 /index.html
改为 file 术语来解决问题。例如:
try_files /$geoip_country_code/index.html /index.html =404;
=404
永远不会被执行,因为/index.html
一直存在。
就个人而言,我会使用通用解决方案:
try_files /$geoip_country_code$uri $uri /index.html;
有关更多信息,请参阅 this document。