【问题标题】:Perl rewrite old URLS to seo friendlyPerl 将旧的 URL 重写为对 seo 友好
【发布时间】:2015-10-23 10:22:12
【问题描述】:

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

我想用破折号 (-) 替换以下实例:

  • 空间
  • 昏迷
  • 加号
  • 括号
  • 撇号
  • 双破折号加单破折号
  • 然后所有的大写和小写

以下已实现,在服务器上不起作用

我已经重写了 nginx 正在使用的 perl 片段,如下所示:

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;
    }

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

【问题讨论】:

  • 你能举一个 URI 的例子以及它重写的内容吗?
  • 我有一些错误的 url,所以这里有一些是错误的 domain.com/DVDC/Yes+man's house.html 需要重定向到 domain.com/dvdc/yes-man-s -house.html

标签: regex perl nginx url-rewriting seo


【解决方案1】:

您可以将任何特殊字符替换为破折号/连字符

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

【讨论】:

    猜你喜欢
    • 2012-09-06
    • 2021-07-06
    • 1970-01-01
    • 2015-07-30
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 2015-01-04
    相关资源
    最近更新 更多