nginx 301重定向无法正常工作

时间:2012-04-28 11:14:46

标签: redirect nginx

这是我的配置文件:

    server {
    listen   80;
    server_name moule-a-manque.com;
    access_log /var/log/nginx/myvps.com.access.log;
    error_log /var/log/nginx/myvps.com.error.log;
    client_max_body_size 4M;
    client_body_buffer_size 128k;
    expires off;

rewrite http://www.moule-a-manque.com http://moule-a-manque.com permanent;

    location / {
    root   /var/www/mom;
    index index.html index.php;
    }

我认为应该可行,但当我在http://nibbler.silktide.com/reports/moule-a-manque.com查看时,似乎说重定向无效。

我是直接做这个吗?如果是这样,怎么能确保301重定向确实有效

1 个答案:

答案 0 :(得分:2)

nginx中的重写指令仅匹配url的路径部分,而不是主机名。看起来你正试图强迫no-www,这是通过使用第二个服务器{}:

来实现的
server {
  server_name www.moule-a-manque.com;
  rewrite ^ http://moule-a-manque.com$request_uri? permanent;
}

server {
  listen   80;
  server_name moule-a-manque.com;
  access_log /var/log/nginx/myvps.com.access.log;
  error_log /var/log/nginx/myvps.com.error.log;
  client_max_body_size 4M;
  client_body_buffer_size 128k;
  expires off;

  root   /var/www/mom;
  index index.html index.php;
}

此外,通常最好将根设置在某个位置之外。请参阅http://wiki.nginx.org/Pitfalls