之前给nginx做301重定向的时候经常会这样写:
server { listen 80; server_name www.nginx.org nginx.org; if ($http_host = nginx.org) { rewrite (.*) http://www.nginx.org$1; } ... }
而今天在 nginx docs 上看到这是不正确的。。。。
正确的写法应该是这样的:
server { listen 80; server_name nginx.org; return 301 http://www.nginx.org$request_uri; } server { listen 80; server_name www.nginx.org; ... }
这好像只能在较新版本的 nginx 中才有用,在0.9.1版本(含)以前,可以这样实现重定向:
rewrite ^ http://www.nginx.org$request_uri?;
EOF