Answers:
server_name支持使用.mydomain.com语法进行后缀匹配:
server {
server_name .mydomain.com;
rewrite ^ http://www.adifferentdomain.com$request_uri? permanent;
}
或任何0.9.1或更高版本:
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
listen
如果未指定,则伪指令默认为端口80。实际上,它比一般情况要复杂一些。有关更多详细信息,请参见nginx配置文档。
?
最后的成就是什么?
rewrite
和之间有什么区别return 301 $scheme://www.adifferentdomain.com$request_uri;
?
$request_uri
已经有了查询字符串,因此无需再次追加查询字符串。该return 301
语法是新的,而且应该在这两种方法之间的行为没有什么区别,但是当我最初回答了这个问题,很多发行没有所需的版本,所以我更安全的语法去了。
server {
server_name .mydomain.com;
return 301 http://www.adifferentdomain.com$request_uri;
}
http://wiki.nginx.org/HttpRewriteModule#return
和
如果可以,为什么要使用重写模块return
?从技术上讲,它return
是重写模块的一部分,您可以在此处阅读,但是此代码段更易于阅读imho。
server {
server_name .domain.com;
return 302 $scheme://forwarded-domain.com;
}
您也可以给它一个301重定向。
return 302 $scheme://forwarded-domain.com$request_uri;
那应该通过HTTPRewriteModule起作用。
从www.example.com重写为example.com的示例:
server {
server_name www.example.com;
rewrite ^ http://example.com$request_uri? permanent;
}
server_name example.com www.example.com;
。
您可以简单地在server {}块中编写一个if条件:
server {
if ($host = mydomain.com) {
return 301 http://www.adifferentdomain.com;
}
}