先将中文参数 使用server.URLEncode()进行编码;
在接收页头部加下面代码,记得一定得是最上面
<%Session.CodePage = 65001request.QueryString("key") ‘key参数可有可无,可以是空的
Session.CodePage = 936 %>
1.顺序换一下,并把\w+换成.*?如下RewriteRule ^search/(.*?)/page=(\d+)$ search.php?c=$1&page=$2
RewriteRule ^search/(\w+)$ search.php?c=$1
2.abc/def只匹配abc
([^\/]*)/
括号里面就是abc
3.除了字符外,还允许%号出现abc%def全部能匹配出来
([\w\%]*)
括号里就是你想要的
配置Apache的伪静态,涉及到中文正则不能匹配,匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)