我正在尝试修复我的旧网址,其中包含所有.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;
}
如果我需要提供更多信息,请告诉我
答案 0 :(得分:0)
您可以将任何特殊字符替换为短划线/连字符
$url=~ s/\W+/-/g;