Nginx下无法使用中文URL的解决方法
前言
最近更换了博客空间后,发现许多文章页出现404的情况,找了一下原因,发现是由于URL含有中文而Nginx默认不支持中文URL导致的。此文记录了解决方法。
在Apache中,要实现对中文的支持需要单独加载中文模块,而Nginx是支持多种编码不需要安装其他组件的,只是默认是走UTF-8的支持路线。这里提供两种方法实现Nginx对中文URL的支持。
方法一
利用convmv对文件名转码
此方法治标不治本,仅供紧急时候使用(访问量大时间段,无法对服务器进行重启操作的时候)。
这里以CentOS为例,其他系统同理。
安装convmv
yum -y install convmv
转码
convmv -fGBK -tUTF8 -r --notest target
其中-f是源编码,-t是目标编码,-r是递归处理目录,–notest是不移动,实际上对文件进行改名,target是目标目录。
方法二
更改Nginx站点配置文件,修改编码为UTF-8。
系统区域语言设置
# vi /etc/sysconfig/i18n
加入
LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16"
并重启系统(如果没有此文件则创建)
更改Nginx设置
编辑站点的Nginx配置文件,在sever中添加
charset utf-8;
如:
server{ listen 80; servername www.iots.vip; root /www; index index.html index.jsp; charset utf-8; ...
同时需要将FTP与shell工具的字符集设置为UTF-8。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
nginx配置文件详解中文版
本文列出了nginx默认配置文件 nginx.conf手大部分命令,并加以中文注释说明,实际配置中可能没有这么复杂,这里只能作为一个参考阅读文档!一.nginx基本配置 复制代码 代码如下: #定义Nginx运行的用户和用户组,系统中必须有此用户,可以是nologinuser www www; #启动进程,通常设置成和cpu的数量相等worker_processes 1; #全局错误日志及PID文件error_log /var/log/nginx/error.log; #错误日志定义等级
-
详解Linux环境下使Nginx服务器支持中文url的配置流程
1:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 2:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; charset utf-8; } 如果是用securecrt 上传文件,请选
-
使Nginx服务器支持中文URL的相关配置详解
关于中文URL已经是老话题了,到目前为止依然有很大一部分SEOer都会说不要使用中文URL,对搜索引擎不友好. 不过,那已经是以前的事了,谷歌很早就支持了中文URL,当时百度技术没有跟上,URL中会出现乱码. 在谷歌的算法中,URL包含关键字是会给页面赋予一定权重的,英文是,中文也是,朽木猜测百度之前没有给予中文URL权重,可能是因为识别的问题. 经过一些简单的测试,朽木发现中文URL中包含关键字,对百度SEO有很积极的影响. 不过需要注意的是最好使用UTF8编码,虽然百度有了"一定的识别能力&
-
如何让Nginx支持中文文件名具体设置步骤
首先得让你的系统有中语语言包: 设置前可以执行:locale 看一下,如果显示是en_US.UTF-8,即是正常,不用按下面的步骤设置.如果显示其他编码需要按如下步骤设置. CentOS 编辑/etc/sysconfig/i18n 文件,内容修改为:(可以使用vi.nano或winscp图形管理软件,依个人口味选择) LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun16" 保存,重启系统. Debian apt-get inst
-
Nginx下无法使用中文URL的解决方法
前言 最近更换了博客空间后,发现许多文章页出现404的情况,找了一下原因,发现是由于URL含有中文而Nginx默认不支持中文URL导致的.此文记录了解决方法. 在Apache中,要实现对中文的支持需要单独加载中文模块,而Nginx是支持多种编码不需要安装其他组件的,只是默认是走UTF-8的支持路线.这里提供两种方法实现Nginx对中文URL的支持. 方法一 利用convmv对文件名转码 此方法治标不治本,仅供紧急时候使用(访问量大时间段,无法对服务器进行重启操作的时候). 这里以CentOS为例
-
关于Interlij 无法使用中文输入法的解决方法(适用于Interlij全家桶 Linux环境)
最近切换到了Ubuntu的系统作为工作环境, 在使用Pycharm的时候, 出现了个奇怪的问题 中文是无法正常输入的, 然后找遍了网上的解决办法. 系统信息如下: 中文输入法是 ibus 确认环境变量声明的办法是无效的之后, 去找了下官方反馈 原因是: This is a bug introduced in the new JBR so the old JBR helps. Please use that old JBR version as a workaround currently. Wh
-
PHP(FastCGI)在Nginx的alias下出现404错误的解决方法
本文讲述了PHP(FastCGI)在Nginx的alias下出现404错误的解决方法.分享给大家供大家参考,具体如下: 在Nginx的官方wiki中如下描述 The alias directive cannot be used inside a regex-specified location. If you need to do this you must use a combination of rewrite and root. 在实际使用中alias下面的php返回404,而html确可
-
CMD下执行Go出现中文乱码的解决方法
目录 1.报错信息如下 2.原因分析 3.解决方法 4.封装处理乱码方法 5.解决乱码完整代码 1.报错信息如下 2.原因分析 因为Go的编码是UTF-8,而CMD的活动页是cp936(GBK),因此产生乱码.在中文Windows系统中,如果一个文本文件是UTF-8编码的,那么在CMD.exe命令行窗口(所谓的DOS窗口)中不能正确显示文件中的内容.在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者英文字符集. 3.解决方法 golang处理中文时默认是utf8,当遇
-
Windows下在CMD下执行Go出现中文乱码的解决方法
在cmd下运行go程序或者是GOLAND的Terminal下运行go程序会出现中文乱码的情况. go run ttypemain.go ���� Ping [127.0.0.1] ���� 32 �ֽڵ�����: ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 ���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128 ����
-
Windows下CMD执行Go出现中文乱码的解决方法
在cmd下运行go程序或者是GOLAND的Terminal下运行go程序会出现中文乱码的情况. go run ttypemain.go ���� Ping [127.0.0.1] ���� 32 �ֽڵ�����:���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128���� 127.0.0.1 �Ļظ�: �ֽ�=32 ʱ��<1ms TTL=128���� 127.
-
nginx could not build the server_names_hash 解决方法
nginx "nginx could not build the server_names_hash"解决方法 给一个服务器下增加了一些站点别名,差不多有20多个. 重启nginx时候,提示: could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32 解决方法: 在配置文件的http{}段增加一行配置 server_names_hash_bucket_size
-
Nginx报404错误的详细解决方法
近日在部署项目时,出现了一些问题,如图 正常的登录界面是可以访问的,但是在登录之后访问之后的地址会报404错误,于是去查看是否配置有错误,但是查看之后发现,nginx.conf与config.js两个配置文件的ip和端口都是没有错误的 这个项目部署过好多次,没有出现过这样的错误. 这是原版没动过的解压缩后的nginx.conf的源文件 圈起来的地方是应该按照项目配置对应的ip和监听的端口 listen对应的是端口,server_name对应的是访问的ip 但是这样是不能解决问题,我们需要添加如下
-
Oracle客户端与plsql查询数据乱码修改成中文的快速解决方法
1.查询ORACLE服务器的语言.地域和字符集 select * from nls_database_paameters; 查询结果如下图, NLS_LANGUAGE 表示"语言",NLS_TERRITORY 表示"地域",NLS_CHARACTSET 表示"字符集",将他们三个按照"语言_地域.字符集"的格式拼接起来,就有了"AMERICAN_AMERICA.ZHS16GBK". 下面正式的来操作: 2.
-
MySQL从命令行导入SQL脚本时出现中文乱码的解决方法
本文实例讲述了MySQL从命令行导入SQL脚本时出现中文乱码的解决方法.分享给大家供大家参考,具体如下: 在图形界面管理工具 MySql Query Browser中打开脚本(脚本包括建库.建表.添加数据),并执行,不会有任何问题:但是使用mysql命令行工具执行建库脚本时,添加数据中如果包含中文,存入的数据就是乱码或是???... 解决方法1:在MySql安装目录下找到my.ini,将[mysql]下的default-character-set=latin1改为default-characte
随机推荐
- 浅谈关于.vue文件中style的scoped属性
- WINRAR注册码 全版本通用 要得快
- Java中抽象类和接口的区别_动力节点Java学院整理
- js循环改变div颜色具体方法
- asp.net程序优化 尽量减少数据库连接操作
- C#中的委托和事件学习(续)
- thinkPHP自定义类实现方法详解
- php中current、next与reset函数用法实例
- javascript实现实时输出当前的时间
- JavaScript Event学习第六章 事件的访问
- JavaScript字符串String和Array操作的有趣方法
- JS事件添加和移出的兼容写法示例
- 莫言最好看的6本书分享
- 实现了基于TCP的Java Socket编程实例代码
- javaweb实战之商城项目开发(一)
- Win XP操作系统支持工具全接触
- Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
- Android开发之缓冲dialog对话框创建、使用与封装操作
- Android MVP模式实战教程
- MAC算法之消息摘要算法HmacMD5的实现