我正在尝试向NGINX配置添加一个简单的规则,其中根网址www.example.com
始终使用语言后缀www.example.com/en/
重写。我试过这个:
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;
}
...
}
答案 0 :(得分:3)
处理重定向有两种常用方法:
server {
...
rewrite ^/$ /en/ permanent;
...
}
请注意,rewrite rules不一定是绝对网址,但如果 是绝对网址,则需要包含协议rewrite /x https://example.com/y;
。
没有必要在位置块中放置这样的重写规则。
使用位置块需要使用与网址完全匹配的内容:
server {
...
location = / {
return 301 /en/;
}
...
}
=
的使用意味着规则仅匹配域根的请求,否则rules of location block precedence意味着位置块将成为所有域的默认值要求。 Return用于发布301(永久)重定向。