2012-07-12 232 views
1

我有一個運行WordPress的網站example.com。現在,我想搬到這個博客子域blog.example.com,但我也想以下幾點:Nginx:將網站遷移到新域名

example.com --> static page (not wordpress) 

blog.example.com --> new address to the blog 
blog.example.com/foo --> handled by wordpress 

example.com/foo --> permanent redirect to blog.example.com/foo 

所以,我想這下配置:

server { 
      server_name example.com; 

      location =/{ 
        root /home/path/to/site; 
      } 

      location/{ 
        rewrite ^(.+) http://blog.example.com$request_uri? permanent; 
      } 
    } 

在這種情況下重定向可以正常使用。不幸的是,example.com也重定向到blog.example.com。

回答

2

它轉向的原因是因爲當它試圖加載索引文件example.com,它執行內部重定向到/index.html,這是由您的重寫位置處理。爲了避免這種情況,你可以使用try_files:

server { 
    server_name example.com; 

    root /home/path/to/site; 

    location =/{ 
    # Change /index.html to whatever your static filename is 
    try_files /index.html =404; 
    } 

    location/{ 
    return 301 http://blog.example.com$request_uri; 
    } 
} 
+0

非常感謝!現在正在工作 – 2012-07-13 06:54:22

1

只要兩個域的根將指向不同的目錄,你會需要兩個server指令 - 這樣的事情:

server { 
     # this is the static site 
     server_name example.com; 

     location =/{ 
       root /home/path/to/static/page; 
     } 

     location /foo { 
       return 301 http://blog.example.com$request_uri; 
     } 
} 

server { 
     # this is the WP site 
     server_name blog.example.com; 

     location =/{ 
       root /home/path/to/new_blog; 
     } 

     .... some other WP redirects ..... 
} 
+0

當然,我有像這些blog.example.com的設置和block.example.com完美。問題是如何從example.com的根目錄中刪除重定向? – 2012-07-12 23:01:43

+0

很奇怪,上面的代碼不工作..永久性重定向有時很棘手。您是否嘗試使用其他瀏覽器?如果它以某種方式緩存了301響應... – Tisho 2012-07-12 23:17:17