Rewrite是一种服务器的重写脉冲技术,它可以使得服务器可以支持 URL 重写,是一种最新流行的服务器技术。很多站长热衷于Rewrite来实现短地址来访问网站内容,wordpress是一个利用较多较成熟的一个。实现原理居于rewriterule来实现,好像大家都懂,但一旦出错好像啥都干不了,百度知道,谷歌搜索都救不了,因为不理解伪静态规则,更何况移植到nginx,或其他平台上了。特别是一些SEO的朋友,对伪静态几乎不了解,宣称地址越短对搜索引擎越好,我发现也不尽然,当然如果熟悉了伪静态技术,可以更好按照你的想法去改造访问地址,如stwriterule 为phpwind写的伪静态,的确美观但不灵活,居于程序和规则局限性较大。
wordpress 的伪静态规则如下,先说下参数 ,【L】 立即停止重写操作,并不再应用其他重写规则。它对应于Perl中的last命令或C语言中的break命令。这个标记用于阻止当前已被重写的URL被后继规则再次重写。例如,使用它可以重写根路径的URL(‘/’)为实际存在的URL(比如:’/e/www/’)。
【-d】: 将testString当作一个目录名,检查它是否存在以及是否是一个目录.
【-f】 (是否是regular file) 将testString当作一个文件名,检查它是否存在以及是否是一个regular文件.
-
RewriteRule ^index\.php$ – [L] 第一条,当请求为 index.php的时候,停止应用其他规则,即访问首页的时候不需要其他处理
RewriteCond %{REQUEST_FILENAME} !-f 当请求访问的文件不存在的时候交给程序处理
RewriteCond %{REQUEST_FILENAME} !-d 当访问目录不存在的时候交给程序处理
RewriteRule . /index.php [L]
仅仅规则说明不了问题,大家可以打开wordpress/wp-includes/rewrite.php查看代码,查看iis7_url_rewrite_rules()函数的处理方法。程序我解读不好,这里就不多解释,整篇看下来会发现,wrodpress 对伪静态技术的态度相当给力,如save_mod_rewrite_rules() 直接去判断是否存在.htaccess文件。如果是iis7直接去判断是否存在web.config 文件, 对于wordpress 的伪静态适用平台之广,以及支持范围之自由,是我遇到的最开放的博客程序。
比如你希望博客文章访问地址为日期.html ,分类名/日期.html 或者是自定义,比如本站的目录式伪静态,或者像“互联网那点事”根目录下的文章ID.html都是可以在wordpress自由的完成。
伪静态的应用上wordpress的技术比较成熟,至少对rewrite的支持相当成熟,有兴趣的童鞋可以对该软件进行深度解读,对应用在新项目有些启发和帮助的。如果是新同学建议先看看IIS下设置伪静态(rewrite)的教程,确实学习技术的时候建议在apache平台上完成,方便,IIS稍微麻烦一些~
有时候,我会对伪静态的学习从零开始,把我学习的过程写下来,发现国内对伪静态技术比较鸡肋,一个是需求量好像很大却不急切,一个是几乎都是论坛和CMS的规则,而且千篇一律。
今天写到这里, 改天重头开始写,.htaccess 和伪静态实现原理,百度上的教程有很多,我收集整理加上我自己的理解,仅此而已~
ps:形式1:年/月/日/Postname.html ,形式2:年/月/日/Postname/ ,形式3:/post/PostID.html ,形式4: /PostID.html









评论关闭。