我们有一个“测试版”网站,http://beta.domain.com, 尽管http://www.domain.com包含启动页面。现在我们删除了启动页面,并将网站移至实际域。我在 nginx 中设置了永久重定向来处理这个问题,但不知何故它无法正确重定向。
server {
server_name beta.domain.com;
rewrite ^/(.*) http://www.domain.com/$1 permanent;
}
当我使用 curl 测试它时,它似乎按预期工作。
$ curl -v beta.domain.com/page
> GET /page HTTP/1.1
> User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
> Host: beta.domain.com
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.2.1
< Date: Tue, 16 Jul 2013 20:37:03 GMT
< Content-Type: text/html
< Content-Length: 184
< Connection: keep-alive
< Location: http://www.domain.com/page
<
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.2.1</center>
</body>
</html>
http://beta.domain.com/page
但是,当我在 Firefox 中转到 时,我被重定向到http://www.domain.com
而不是http://www.domain.com/page
。如果我在 Firefox 中直接转到http://www.domain.com/page
,则一切正常。
我想通过适当的永久重定向来修复此问题以实现 SEO,但无法找出此问题的原因。我们正在使用在 Apache/ModWSGI 上运行的 Python/Django 部署,并使用 nginx 作为前端服务器。
谢谢!
答案1
尝试使用return
反而。
server {
listen [::]:80;
server_name beta.example.com;
return 301 $scheme://www.example.com$request_uri$is_args$args;
}
答案2
与我的服务器上的一些重写相比,您可能有一些不必要的斜线
尝试重写^(.*) scheme://www.domain.com$1 永久;