我有两个select(返回和重写)redirect,我不知道哪些是性能,search引擎优化等build议:
## Redirect from non-www to www server { server_name example.com; # Option 1 return 301 $scheme://$host$request_uri; # Option 2 rewrite ^ http://$host$request_uri? permanent; } ## Default server config server { ... listen 192.168.1.1:80 default_server; root /www; server_name www.example.com;
选项2似乎与curl一起工作,但在浏览器调用时不会redirect,并且返回码是临时redirect的,即使rewrite指令被设置为permanent :
curl -I example.com HTTP/1.1 302 Moved Temporarily Server: nginx ... Location: http://www.example.com/ ...
你的select1:
return 301 $scheme://$host$request_uri;
正是你想要的。
不知道为什么rewrite ^ http://$host$request_uri? permanent; rewrite ^ http://$host$request_uri? permanent; 行会导致302而不是301.这是强制它返回301的正确语法。