------------------ 原始邮件 ------------------
发件人: "agentzh"<age...@gmail.com>;
发送时间: 2013年3月19日(星期二) 下午2:49
收件人: "openresty"<openresty@googlegroups.com>;
主题: Re: 回复: [openresty] replace-filter-nginx-module 模块问题
Hello!
2013/3/18 red-hat:
> replace-filter-nginx-module Bug:
> 当源网址HTML代码为一行很长的代码时,使用
> nginx.conf code:
> replace_filter '源中文' '目标中文';
> 时,会存在规则失效问题
> 测试样本:
> "Untitled-ip.rar" http://vdisk.weibo.com/s/u7KpT
>
> nginx.conf code:
> replace_filter "我是549eb6a要替换的" "被替换的3e509a2啊" ;#无效
> replace_filter '源中文' '目标中文'; #无效
> replace_filter '549eb6a' '0000000'; #有效
>
我刚刚使用你的 Untitled-ip.rar 中的 Untitled-ip.html 文件测试了你提供的配置,结果如下:
1. 第一条替换规则是可以正确替换的,即:
replace_filter "我是549eb6a要替换的" "被替换的3e509a2啊"
2. 第二条规则不能替换是符合期望的,因为你的 Untitled-ip.html 文件中根本没有“源中文”这个字符串:
$ grep 源中文 /tmp/Untitled-ip.html; echo $?
1
使用浏览器打开此页面并在页面里自动查找也找不到。你可以自己试一下。
3. 你提供的 Untitled-ip.html 是 UTF-8 编码的,可以使用 file 这样的工具查看:
$ file -bi /tmp/Untitled-ip.html
text/html; charset=utf-8
所以你需要确保你的 nginx.conf 配置文件也使用的是 UTF-8 字符编码。比如在我这里可以使用 file 工具确认这一点:
$ file -bi conf/nginx.conf
text/plain; charset=utf-8
值得一提的是,我使用的是 github 上 replace-nginx-module 和 sregex 这两个仓库里 master
分支上的最新版本 :) 并且是在 Linux x86_64 系统上结合 nginx 1.2.7 测试的。
另外,使用 .tar.gz 这样更通用的压缩格式是推荐的做法,毕竟 .rar 这样的东西解起来需要特别的工具(比如 Linux 上需要
unrar)。同时,在报告问题时先把样本数据弄得小一些,可以节约我们诊断问题的时间,也可以节约网络带宽,另外也可能帮助你自己首先排查出问题。
最后,一个小建议是,在 openresty
邮件列表里发贴前最好首先订阅此列表(订阅的方法请见此邮件的尾注),否则你发送到列表的每一封邮件都须经过人工审核才能公开出来。
Best regards,
-agentzh
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty+subscribe@googlegroups.com
发言: 请发邮件到 openresty@googlegroups.com
退订: 请发邮件至 openresty+unsubscribe@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html