我正在尝试向我的Nginx配置添加一个简单的规则,以便始终使用语言后缀www.example.com/en/重写根URL www.example.com.我已经试过了:
server {
listen 80;
server_name www.example.com;
location / {
rewrite ^$www.example.com/en/ permanent;
}
...
}
但是没有运气.我要去哪里错了?另外,是否可能存在Nginx检查是否存在/ en /后缀,如果不存在则加一个后缀的情况?
编辑
所以我离最初想要的只有一个角色:
server {
listen 80;
server_name www.example.com;
location / {
# needed the / in between the anchor tags
rewrite ^/$www.example.com/en/ permanent;
}
...
}
最佳答案
有两种处理重定向的正常方法:
原文链接:https://www.f2er.com/nginx/532298.html使用重写规则
server {
...
rewrite ^/$/en/ permanent;
...
}
请注意,rewrite rules不必是绝对URL,但是如果要是绝对URL,则它们需要包括协议重写/ x https://example.com/y;.
无需将这样的重写规则放在位置块中.
使用位置块返回30倍
使用位置块需要对网址使用完全匹配:
server {
...
location = / {
return 301 /en/;
}
...
}
使用=表示规则将仅匹配对域根的请求,否则rules of location block precedence表示位置块将是所有请求的默认值. Return用于发出301(永久)重定向.