2012-09-09 160 views
2

我們正在切換供應商以進行屬性搜索,並且每個網址的格式都有所不同。我們已經有40,000多個網址被編入索引,並希望用戶被重定向到新的網址。Nginx將舊網址重定向到新網址

URL的唯一區別是從下劃線到連字符以及從/ idx /到/ property /切換。

這裏是舊的URL:http://www.mysite.com/idx/mls-5028725-10425_virginia_pine_lane_alpharetta_ga_30022

這裏的新網址:http://www.mysite.com/property/mls-5028725-10425-virginia-pine-lane-alpharetta-ga-30022

任何想法如何將所有這些URL重定向不知道什麼是40000網址的每一個是誰?

感謝, 基思

回答

0

一種方法是使用一個Perl子程序改變下劃線爲連做。你需要用perl編譯nginx,除非它已經不包含。這不是一個完全的解決方案的工作,但它可能讓你在正確的方向前進:在位置

perl_modules perl/lib; 
perl_set $fix_uri 'sub { 
     use File::Basename; 
     my $req = shift; 
     my $uri = $req->uri; 
     $uri = basename($uri); 
     # Do some magic here, probably more elegant than this 
     $uri =~ s/idx/property/g; 
     $uri =~ s/_/-/g; 
     return $uri; 
}'; 

然後,你可以調用:

在nginx.conf的HTTP部分中添加此子程序:

location ~ "/idx/(.*" { 
      set $redirect_path $fix_uri; 
      rewrite . $redirect_path; 
    } 
0

我自己更喜歡ngx_lua模塊。

location /idx/ { 
    rewrite_by_lua ' 
     local tempURI, n = ngx.re.gsub(ngx.var.uri, "_", "-") 
     local newURI, m = ngx.re.sub(tempURI, "/idx", "/property", "i") 
     return ngx.redirect(newURI, ngx.HTTP_MOVED_PERMANENTLY) 
    '; 
} 

第一行(GSUB)改變了這一切 「_」,以 「 - 」

第二行(子)第一改變 「/ IDX」 到 「/屬性」

第三行是顯而易見的

相關問題