Nginx下无法使用中文URL的解决方法

前言

最近更换了博客空间后,发现许多文章页出现404的情况,找了一下原因,发现是由于URL含有中文而Nginx默认不支持中文URL导致的。此文记录了解决方法。

在Apache中,要实现对中文的支持需要单独加载中文模块,而Nginx是支持多种编码不需要安装其他组件的,只是默认是走UTF-8的支持路线。这里提供两种方法实现Nginx对中文URL的支持。

方法一

利用convmv对文件名转码

此方法治标不治本,仅供紧急时候使用(访问量大时间段,无法对服务器进行重启操作的时候)。

这里以CentOS为例,其他系统同理。

安装convmv

?
1
yum -y install convmv

转码

?
1
convmv -fGBK -tUTF8 -r --notest target

其中-f是源编码,-t是目标编码,-r是递归处理目录,–notest是不移动,实际上对文件进行改名,target是目标目录。

方法二

更改Nginx站点配置文件,修改编码为UTF-8。

系统区域语言设置

?
1
# vi /etc/sysconfig/i18n

加入

?
1
2
LANG= "en_US.UTF-8"
SYSFONT= "latarcyrheb-sun16"

并重启系统(如果没有此文件则创建)

更改Nginx设置

编辑站点的Nginx配置文件,在sever中添加

?
1
charset utf-8;

如:

?
1
2
3
4
5
6
7
server{
listen 80;
servername www.iots.vip;
root /www;
index index.html index.jsp;
charset utf-8;
...

同时需要将FTP与shell工具的字符集设置为UTF-8。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

原文链接:https://www.iots.vip/post/nginx-chinese-url.html


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值