我正在尝试从 mydomain.com 重定向到 www.mydomain.com .. 但是,nginx 正在将 location-header 重写为 $host。
server{
server_name mydomain.de;
set $root /srv/www/mydomain.de;
listen 8080;
root $root;
index index.html index.htm;
location / {
rewrite ^(.*) http://www.google.de$1 permanent;
}
add_header Cache-Control private;
}
server_tokens off;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 2048 8k;
client_max_body_size 100M;
client_body_buffer_size 100M;
server_names_hash_max_size 1024;
这就是我的服务器配置。但我没有重定向到谷歌,而是陷入了重定向循环。我在另一个服务器主机(www.mydomain.de)中确实有很多重写规则,但它们似乎没有关系,因为这个虚拟主机甚至没有使用。
Error.log内容如下:
2012/10/24 17:26:26 [notice] 2244#0: *175 "^(.*)" matches "/", client: 127.0.0.1, server: mydomain.de, request: "GET / HTTP/1.1", host: "mydomain.de"
2012/10/24 17:26:26 [notice] 2244#0: *175 rewritten redirect: "http://www.google.de/", client: 127.0.0.1, server: mydomain.de, request: "GET / HTTP/1.1", host: "mydomain.de"
有人知道如何解决我的问题吗?我完全不知道出了什么问题。谢谢。
编辑:这甚至不起作用:
server{
server_name test.prod-web.hrm;
listen 8080;
location / {
rewrite ^(.*) http://www.google.de$1 permanent;
}
}
答案1
rewrite
我根本不会用这个。
相反,尝试这样做:
return 301 $scheme://www.example.com$request_uri$is_args$args;
如果此操作失败,则可能是您的环境中存在其他因素导致了该问题。
答案2
只需创建一个额外的服务器来进行重写:
server {
listen 192.168.1.234:80;
server_name example.com; # your domain name
rewrite ^/(.*) http://www.example.com/$1 permanent;
}
确实应该如此。注意你缺少的斜线