最近一个网站需要做伪静态,所有页面都实现伪静态了,现在就差搜索页的伪静态问题,一直没有好的办法解决。
现在的问题是,如果按正常的思路做.htaccess下的伪静态规则,发现有些字符无法传递过去,比如下面这个:
RewriteRule ^search-(.*?).html$ 1.php?q=$1
一般来说这种规则不会有问题,但实际测试发现有一些特定字符会出问题,比如下面这种情况,
正常可以获取到这个中文字符的“际”,但实际上有些字会有问题。
于是查了一些关于中文字符的正规表达式方法,加上这个([^x00-xff\dA-Za-z]+?)测试下:
中文字符没有问题,但是加上数字就不行了,所以又找了数字的正则,加了好几种类型,也不行,后来又试了字母,所以后面又写成这样:
RewriteRule ^search-(.*?||.*?[^x00-xff\dA-Za-z]+?.*?).html$ 1.php?q=$1
经测试,以上代码可以正常用作搜索伪静态下的.htaccess配置,至于IIS下的Web.Config按这个思路配置就可以。