匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
也试了,也不能匹配。
尝试匹配所有字母数字加上% ([a-zA-Z0-9_%]+)
也没有成功,查到Apache执行url会自动进行一次urldecode,传的值会还原成中文的,也不能匹配。
后来想到,把值进行两次 urlencode ,取的时候再进行两次 urldecode 用([a-zA-Z0-9_%]+)
就可以匹配了。
什么是伪静态伪静态是相对真实静态来讲的,通常为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。
区别静态
1、从URL结构以及页面名称看,伪静态和静态页面是一样的。伪静态的页面后缀可以是htmlhtm或者是目录格式
2、伪静态只是改变了URL的表现形式,实际上还是动态页面
静态页面可以节省服务器资源,而伪静态严格说是增加服务器资源消耗的
3、总结,在SEO方面,伪静态和静态页面的功能是相同的,但是伪静态本质上还是动态页面,所以消耗资源是和动态页面一样的,而且因为Rewrite服务器还需要消耗额外的资源。
主要不足
1、CPU占有量
"如果流量稍大一些使用伪静态就出现CPU使用超负荷,比如同时在线300多人就挂了,而不使用伪静态的时候同时在线超500人都不挂,网站的IIS数是1000。由于伪静态是用正则判断而不是真实地址,分别显示哪个页面的责任也由直接指定转由CPU来判断了,所以CPU占有量的上升,是伪静态最大的弊病。
2、网站承受力低。
伪静态会造成网站可承受同时在线人数剧减。如果网站可以保证1000人同时访问的话,那么做了伪静态处理之后,300人访问就足以让网站挂掉。
3、网页打开慢。
伪静态页面打开速度快?伪静态仍然要读取数据库,还额外的多了一个重写网址的过程,其他的步骤绝对不会比动态少,所以不快!
4、大量的重复页面。
做了伪静态后,原有的页面也可以访问,这就造成了大量的伪静态页面和动态页面重复,对网站极为不好。
5、需要服务器支持。
并不是所有的服务器都支持伪静态的,这无形中又增加了成本。
所以,如果网址中的动态参数没有达到影响搜索引擎收录的程度,动态要比伪静态好的多。
6、造成真正的静态网页无法访问。
如果把php伪静态成html,那么真正的静态页就无法访问了。(可通过修改服务器配置解决。)
如何选择
1、使用真静态和伪静态对SEO来说没有什么区别
2、使用真静态可能将导致硬盘损坏并将影响站点性能(这个实在是个谬论,非静态的对硬盘的读取次数胜过真静态)
3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
4、最重要的一点,静态是为了SEO
5、真静态的访问速度明显比伪静态的访问速度要高
所以:
1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。(这个完全是乱讲了,真静态可以提高网站的性能,减少数据库的访问压力,减少CPU和内存的压力。)
2、既然真伪静态的效果一样,可以选择伪静态了。
3、但是伪静态大量使用会造成CPU超负荷。
4、所以只要不大量使用就可以了。
5、既然伪静态只是给搜索引擎爬虫看的,只需伪静态给搜索引擎爬虫就行了,不需要给用户使用。
6、所以只要在专门提供给搜索引擎爬虫 (搜索引擎机器人)爬的Archiver中使用伪静态就可以了
通常,我们在美化或者希望能更好的兼容搜索引擎的时候我们常常使用nginx的rewrite模块来实现,例如:我们希望原本的访问链接xxxx.com/xx/xx/xx.php?id=12,变成这种:xxx.com/xx/xx/12.html;又或者是原本的访问链接太长,我们希望能够简洁一点等等吧,下面我将针对这两种情况来做配置。
(1) 页面伪静态
将xxxx.com/xx/xx/xx.php?id=12这种访问链接变成xxx.com/xx/xx/12.html这种
下面笔者在本地的网站目录下创建一个test.php文件
原本的访问链接: http://w.myblog.com/api/php/test.php?id=1 ,我们访问看下:
需要注意的是:rewrite 完后不能写break,否则php文件无法解析。
我们使用链接: http://w.myblog.com/api/php/1.html 来访问下,
解析php的那段避免累赘,这里就不再写上了。
我们访问看下: http://w.myblog.com/api/php/test-4.html
(2) 简化访问路径
使用过tp的或者其他一些类型的php框架小伙伴们我们在访问方法时需要这样访问: http://w.tp5.com/index.php/index/index/info ,这个表示访问index模块的index控制器中的info方法,但是这么访问不太方便,我们希望去掉index.php,直接使用 http://w.tp5.com/index/index/info 访问,那我们就需要配置下nginx,做一个rewrite.
这段配置的意思是:当访问的文件或者目录不存在时,重定向到某个php文件.
!-e 意思是:-e和!-e用来判断是否存在文件或目录。
last: 相当于apache里面的[L]标记,表示rewrite.
s:表示参数.
加上配置后我们再来访问下:
发现可以正常访问了。需要注意的是:如果不写s=xxx,配置会不生效。
好了,本篇文章就到这里了,有需要补充的小伙伴欢迎在下面给我留言哦,看到会及时回复的。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)