Perl将旧URL重写为seo友好

时间:2015-07-31 16:47:47

标签: regex perl nginx url-rewriting seo

我正在尝试修复我的旧网址,其中包含所有.html请求中的错误字符

我想用短划线(-)替换以下实例:

  • 空间
  • 科马斯
  • 加号
  • 括号
  • 撇号
  • 用短划线双击破译
  • 然后是所有大写和小写

以下内容已经实施,并且无法在服务器上运行

我已经重写了perl片段,nginx使用如下:

perl_set $old_uri 'sub {
my $r = shift;
my $uri = $r->uri;

$uri = lc $uri;
$uri =~ s/[+, ()\']/-/g;
$uri =~ s/--+/-/g;

return $uri;
}';

这会将所有内容切换为小写,将请求的符号转换为破折号,然后将多个破折号连续压缩为一个

perl的规则是

    perl_set $old_uri 'sub {
    my $r = shift;
    my $uri = $r->uri;

    $uri = lc $uri; # Upper to lower
    $uri =~ s/[^a-z0-9-.\/]/-/g;
    $uri =~ s/--+/-/g; # turn double -- to -

    return $uri;
   }';

调用它的位置块是

  location ~ [^a-z0-9-.\/].*.html {
        rewrite ^ $old_uri permanent;
    }

如果我需要提供更多信息,请告诉我

1 个答案:

答案 0 :(得分:0)

您可以将任何特殊字符替换为短划线/连字符

$url=~ s/\W+/-/g;