nginx实现将所有的url转换为小写

nginx的ngx_http_lower_upper_case模块可以大小写转换,我们可以通过和location配合来实现url的大小写转换。

  ngx_http_lower_upper_case模块下载地址: https://github.com/replay/ngxhttplowerupperca

直接使用git clone https://github.com/replay/ngxhttplowerupperca       下载即可。

 

安装git

yum -y install  git

下载模块

git clone  https://github.com/replay/ngxhttplowerupperca

查看nginx编译时的参数

/usr/local/nginx/sbin/nginx -V

进入到nginx源码目录

./configure --prefix=.........(安装时那些东西)  --add-module=/path/ngx_http_lower_upper_case-master(模块下载到本地的路径)

编译

make

替换nginx文件

cp ./objs/nginx /usr/local/nginx/sbin/nginx  

然后查看有没有安装成功

/usr/local/nginx/sbin/nginx -V

然后可以修改nginx.conf或者xxxx.com.conf来实现url转换

vi /usr/local/nginx/conf/nginx.conf

匹配到url中包含大写英文字母的,就全部转换为小写,然后通过伪静态把访问的url301到小写的url上。

    location ~ [A-Z+] {
     lower $var1 $request_uri;
     rewrite ^(.*)/ $var1 permanent;
    }

我这个例子是把所有的大写变成小写,如果只是想变部分的,直接改location即可,如果要把url全部转换为大写的url,把lower换成upper ,需要注意的是,lower/upper不能写在if里,我写在if里提示语法错误,未识别,不知道是版本问题还是都这样。

 

注意:安装完模块之后,写完上面的规则了,需要重启nginx,-s reload是不好使的,需要重启,这个坑我已经踩过了。

 

 

你可能感兴趣的:(nginx,服务器,rewrite,伪静态)