Nginx重写规则用Hyphen替换空格/空格并将URL转换为小写

时间:2014-03-15 08:36:29

标签: nginx url-rewriting url-rewrite-module

如何将我的所有网址转换为小写,并用NGINX中的" "连字符替换空格-

1 个答案:

答案 0 :(得分:3)

我搜索了一些东西,我发现 perl脚本可以帮助我们解决这个问题。所以我在这里分享一个解决方案。解决方案是否可行或是最佳实践,也许NGINX专家可以为它提供一些启示。

首先在nginx.conf http block

中添加以下perl脚本
# Include the perl module
    perl_modules perl/lib;

# Define function
    perl_set $uri_lowercase 'sub {
    my $r = shift;
    my $uri = $r->uri;
    $uri = lc($uri);        # lowercase conversion

    # replace space with - hyphen

    my $search = " ";
    my $replace = "-";
    $uri =~ s/$search/$replace/ig;


    return $uri;
}';

我想留在nginx.conf中的原因因为我需要在多个虚拟主机中使用此功能。

现在在虚拟主机文件中写下这些行

# In case you want your static content's URL should not be converted to lowercase
# Rewrite skip check jpg uppercase characters. leave it blank no processing is required.
location ~ [A-Z]*\.(jpg|jpeg|gif|png|bmp|ico|flv|swf|css|js) {
}

# now check for uppercase and convert it into lowercase
location ~ [A-Z] {
    rewrite ^(.*)$ $scheme://$host$uri_lowercase;
}

# Finally check the whitepaces and replace them
location ~ [\s+] {
    rewrite ^(.*)$ $scheme://$host$uri_lowercase;
}

如果有其他人可以指导我采取更好的方法,我会很乐意应用它。 希望它有所帮助。