我们正在更换房产搜索供应商,每个供应商的 URL 格式都略有不同。我们已经对 40,000 多个 URL 建立了索引,并希望将用户 301 重定向到新 URL。
URL 中的唯一区别是从下划线切换为连字符,以及从 /idx/ 切换为 /property/。
这是旧的网址:http://www.mysite.com/idx/mls-5028725-10425_virginia_pine_lane_alpharetta_ga_30022 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 http://www.mysite.com/property/mls-5028725-10425-virginia-pine-lane-alpharetta-ga-30022
有什么想法如何在不知道 40,000 多个 URL 中的每一个是什么的情况下重定向所有这些 URL?
谢谢,
基思
一种方法是使用 perl 子例程将下划线更改为连字符。您需要使用 perl 编译 nginx,除非它尚未包含在内。这不是一个完全可行的解决方案,但它可能会让您朝着正确的方向前进:
在 nginx.conf 的 http 部分中添加以下内容:
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;
}';
然后在您可以调用子例程的位置:
location ~ "/idx/(.*" {
set $redirect_path $fix_uri;
rewrite . $redirect_path;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)