问题在于nginx在www.example.com/en/上正确匹配了路径 或www.example.com/pl/,而不是www.example.com/en/something/。如果我访问www.example.com/en/something/,则会收到“欢迎使用nginx!”。页。 当我访问www.example.com/en/时,请执行重定向到www.example.com/en/something/的操作-这种情况有效。
我尝试了以下位置:“ / en”,“ ^〜/ en”。
这是怎么回事?
我的nginx.conf看起来像这样:
server {
index index.html index.htm index.nginx-debian.html;
server_name xxx; # managed by Certbot
location / {
root /usr/share/nginx/html/en;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /en/ {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
location /pl/ {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
答案 0 :(得分:1)
在当前配置下,您将使用try_files $uri $uri/ /index.html =404;
。
最后忽略冗余=404
,如果找不到该文件,则将返回位于/usr/share/nginx/html/index.html
的文件。该文件可能包含“欢迎使用nginx!”。
try_files
指令的所有参数都类似于URI,而/en/
索引页的正确URI是/en/index.html
。
例如:
index index.html index.htm;
root /usr/share/nginx/html;
location /en/ {
try_files $uri $uri/ /en/index.html;
}
location /pl/ {
try_files $uri $uri/ /pl/index.html;
}
有关详细信息,请参见this document。