再谈Nginx Rewrite, 中文URL和其它
上次谈到过Nginx和中文URL的问题,这几天又加深了认识。 多分享几个关于Nginx Rewrite的经验。
Nginx匹配指定中文URL的方法:
rewrite "(*UTF8)^x{66f4}x{6539}$" /index.html last;
这个会将 http://www.cslog.cn/%E6%9B%B4%E6%94%B9 重定向到http://www.cslog.cn/index.html。
‘/%E6%9B%B4%E6%94%B9′是中文URL ‘/更改’, x{66f4}x{6539}是这两个汉字的Unicode编码。
注意配合PCRE 7.9以上版本使用,详细看Nginx和中文URL的问题。
Nginx匹配URL中中文参数的方法:
如果要将 http://www.cslog.cn/index.php?title=%E6%9B%B4%E6%94%B9 重定向到http://www.cslog.cn, 则要使用
location = /index.php$ {
if ($args_title =%E6%9B%B4%E6%94%B9 ) {
rewrite ^ /;
}
}
在这里, ‘?title=%E6%9B%B4%E6%94%B9′ 是不能用上例那里的rewrite捕捉到的, 而要使用$arg_参数名这样的方式处理。 而且在这里, ‘%E6%9B%B4%E6%94%B9′是不用特别转换的,直接放上去就可以了。
还要注意到 location后面的 ~, *~, ^~, =或空是有不同的效果的。详细参看nginx的官方手册。
让Nginx在同时识别到两个参数的情况下重定向的方法
假设要在例如 http://www.cslog.cn/index.php?title=%E6%9B%B4%E6%94%B9&lang=Zh-tw 这样的URL,只有在lang=Zh-tw参数存在,并且title参数也存在(不管它的值)的情况下才重定向, 要求会苛刻些,因为nginx自身没有并列的逻辑处理能力,但可以使用如下的方法曲线解决:
location = /index.php {
set $redirect "";
# 检查是否存在"title"参数:
if ( $arg_title ) {
set $redirect "Y";
}
# 检查lang参数是否为 "Zh-tw":
if ( $arg_lang =Zh-tw ) {
set $redirect "${redirect}ES";
}
# 看看条件是否同时成立 "YES":
if ( $redirect = YES ) {
rewrite ^ / last;
}
....
}
转载请注明: 转自船长日志, 本文链接地址: http://www.cslog.cn/Content/nginx-rewrite-chinese/
再谈Nginx Rewrite, 中文URL和其它的更多相关文章
- Nginx – rewrite 配置 URL重写及301跳转原理图
Nginx – rewrite 配置 URL重写 官网:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html 语法:rewrite re ...
- Nginx 使用中文URL,中文目录路径
Nginx 使用中文URL,中文目录路径 分类: linux2012-05-03 11:04 2672人阅读 评论(0) 收藏 举报 nginxurl服务器translationcentosserve ...
- nginx rewrite 实现URL跳转
最近工作中常常要改nginx配置,学习了nginx中rewrite的用法 URL跳转这里说的URL跳转就是用户在访问一个URL时将其跳转到另一个URL上.常见的应用场景是让多个域名跳转到同一个URL上 ...
- Apache、NGINX支持中文URL
Apache(32位):安装环境:CentOS 5.6 + Apache 2.2.15安装结果:安装后支持“中文图片.文件名”链接直接打开以下为安装过程:1.下载安装包 wget ftp://ftp. ...
- 配置NGINX支持中文URL 中文文件名称或文件夹404无法訪问的解决方法
NGINX不须要象apache那样要单独载入支持中文模块. # cat /etc/sysconfig/i18n LANG="en_US.UTF-8" SYSFONT=" ...
- 再谈 Mysql解决中文乱码
一是要把数据库服务器的字符集设置为 utf8. 数据库的字符集会跟服务器的字符集一起变化, 也会变成 utf8: 在/etc/my.cnf中, 的 [mysqld]中, 设置 character-se ...
- Nginx、PCRE和中文URL(UTF8编码)rewrite路径重写匹配问题
最近遇到了使用Nginx 重写中文UTF8编码路径的问题. 才发现默认情况下Nginx的rewrite是不支持UTF8匹配的. 比如: rewrite ^/(..)$ /2个字符文章.html bre ...
- Nginx中文url出现404问题
Nginx中文url出现404问题 前提条件检查,如我的系统centos,需要检查系统字符集是不是支持utf-8, 怎么配置可以参考这个帖子 https://www.vpser.net/manage/ ...
- Nginx rewrite URL examples with and without redirect address
原文地址: http://www.claudiokuenzler.com/blog/436/nginx-rewrite-url-examples-with-without-redirect-addre ...
随机推荐
- iOS:Xcode的beta下编译低版本项目时,出现的Link错误( "_fwrite$UNIX2003", referenced from:)
开发的项目多了,对于一个i386的错误,处理起来应该是得心应手的,可是仔细看来,跟之前遇到i386的错误还不大一样,直接搜i386是搜不到该问题解决的方法,你要是搜“Undefined symbols ...
- SQL Server 2005 中实现通用的异步触发器架构 (转)
在SQL Server 2005中,通过新增的Service Broker可以实现异步触发器的处理功能.本文提供一种使用Service Broker实现的通用异步触发器方法. 在本方法中,通过Serv ...
- jQuery几个经典表单应用整理回想
1.文本框获得(失去)焦点 当文本框获得输入焦点时,将该文本框高亮显示,算不得一个应用.仅仅是一个小技巧,能够提高用户体验. [html] view plaincopy <span style= ...
- IOS开发帐号与发布问题综合
一.iOS开发:AD-HOC版应用测试方法:http://hi.baidu.com/kangle1208/item/163f39530abb4d3195eb05a7 二.plist的方式发布: 1.y ...
- 关于listview,scrollview显示模糊边缘的设置
朋友们有时可能在开发中遇到这样的莫名其妙的问题,listview或scrollview滑动时上边和下边会出现两条模糊的边缘,有时会影响到我们app的视觉效果,我们怎么去掉这两条模糊的边缘呢?很简单,一 ...
- .NET破解之PDF编辑器
本教程只能用于学习研究,不可进行任何商业用途.如有使用,请购买正版,尊重他人劳动成果和知识产权! 第一效果团队(1XG Team)组建于2004年,并长期致力于WINDOWS平台应用软件开发,产品主要 ...
- HTTP 头缓存Last-Modified,ETag,Expires
http://www.jdon.com/40381 Last-Modified和Expires针对浏览器,而ETag则与客户端无关,所以可适合REST架构中.两者都应用在浏览器端的区别是:Expire ...
- jquery翻页
http://js.itivy.com/simplePagination.js/index.html#page-10 http://www.oschina.net/news/41941/7-html5 ...
- HBase in Action前三章笔记
近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔 ...
- CLightLock:一个简单AutoLock
原理: 标准的RAII, 利用构造函数进行加锁,利用析构函数进行解锁. #ifndef _C_LIGTHT_LOCK_HPP #define _C_LIGTHT_LOCK_HPP class CLig ...