黄聪:wordpress伪静态的原理
首先起作用的是配置文件的.htaccess 中的
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
这两个的意思如果没找到对应的文件就访问 index.php对应的文件;举个例就是 http://hcsem.com/wp 如果没有wp这个文件夹就http://hcsem.com/index.php;然后通过内置的规则找到对应的动态地址;
内置规则;
WordPress博客wp-includes文件夹下的taxonomy.php;中的 create_initial_taxonomies()函数创建文章分类category伪静态的初始数据;
WordPress博客wp-includes文件夹下的rewrite.php 是整个伪静态的核心文件中的 rewrite_rules()是生成伪静态的总函数;他运行一次就是将所有伪静态规则生成后写入wp_options这个数据库中option_name是rewrite_rules;这个函数中一排$date_rewrite = $this->generate_rewrite_rules 是生成各链接的规则;
$this->rules = array_merge($robots_rewrite, $old_feed_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite, $author_rewrite, $date_rewrite, $post_rewrite, $this->extra_rules,$page_rewrite,$this->extra_rules_top);
上面这个就是将每个的规则合并起来;我移动了红色的数组;就是规则的顺序从新排列了哈;让他能适合我的静态规则;这里打个比喻;伪静态的正册表达式就相当 于在池塘里面用渔网捕鱼;最前面的网要大;而且最后有一些特殊要求;有的只能捞红色的鱼;有的只能捞黄色的鲤鱼;记住;捞黄色鲤鱼的网一定要在捞黄色鱼网 的前面;不然黄色的鲤鱼就被捞走了 就会出现黄色鲤鱼捞不到;而有一种网是只要是鱼就能捞起来;所以这个一定要在最后面;去掉category的规则伪静态规则有个事"(.+?)/?$" ; 懂正则的都知道这个能匹配所有访问域名;所以我就改变了排列顺序;把这个规则移动到了最后面;而单页面的伪静态有个规则是(.?.+?)(/[0-9]+)?/?$它也能匹配所有的;所以我就把这个改编了哈;加了个.html 伪静态感觉更好;
link-template.php;是相当于根据内置的规则将网站中的链接的动态地址转换成静态地址;function _get_page_link 函数式替换单页规则的;
黄聪:wordpress伪静态的原理的更多相关文章
- 黄聪:《跟黄聪学WordPress主题开发》
又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ...
- 黄聪:wordpress教程
又一个作品完成!<跟黄聪学Wordpress主题开发>,国内最好的Wordpress主题模版开发视频教程!! 目录预览: WordPress官方源文件层式结构讲解 WordPress数据库 ...
- 黄聪:《跟黄聪学WordPress插件开发》
续<跟黄聪学WordPress主题开发>之后,又一个作品完成!<跟黄聪学Wordpress插件开发>,国内最好的Wordpress插件开发视频教程!! 目录预览: WordPr ...
- 黄聪:如何使用CodeSmith批量生成代码(转:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html)
先看看CodeSmith的工作原理: 简单的说:CodeSmith首先会去数据库获取数据库的结构,如各个表的名称,表的字段,表间的关系等等,之后再根据用户自定义好的模板文件,用数据库结构中的关键字替代 ...
- 解决NGINX的WORDPRESS伪静态规则失效的问题
解决NGINX的WORDPRESS伪静态规则失效的问题 前两天搬到了EMSVPS的PR线路上,用上了最新的WDCP2.0管理面板,支持多用户管理(我们几个合租的VPS,最需要这个功能了),感觉很不错, ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(四) Logging Application Block 企业库日志应用程序模块工作原理图: 从上图我们可以 ...
- [转]黄聪:如何使用CodeSmith批量生成代码
本文转自:http://www.cnblogs.com/huangcong/archive/2010/06/14/1758201.html 在上一篇我们已经用PowerDesigner创建好了需要的测 ...
- 黄聪:PHP使用Simple_HTML_DOM遍历、过滤及保留指定属性
<? /* * 参考资料: * http://www.phpddt.com/manual/simplehtmldom_1_5/manual_api.htm * http://www.phpddt ...
- 黄聪:VS2010开发如何在c#中使用Ctrl、Alt、Tab等全局组合快捷键
1.新建一个类 HotkeyHelper using System; using System.Runtime.InteropServices; using System.Windows.Forms ...
随机推荐
- alias sample method——运行时间复杂度为O(1)的抽样算法
根据离散离散概率分布抽样是一个常见的问题.这篇文章将介绍运行时间复杂度为O(1)的 alias method 抽样算法思想. 下面举例说明: 比如 a,b,c,d 的概率分别为 0.1,0.2,0.3 ...
- 越狱Season 1-Episode 10: Sleight of Hand
Season 1, Episode 10: Sleight of Hand -John: Bellick. Bellick What's going on? 这里发生什么了 -Berwick: Tha ...
- 使用CURL下载远程文件保存到服务器
比如微信公众平台开发,下载用户的头像到服务器上: /** * 使用CURL获取远程文件保存到服务器 *@param $image=$oJSON->headimgurl; 获取到的微信返回的头像U ...
- java linux book
calvin1978.blogcn.com/articles/javabookshelf.html
- MiniCRT 64位 linux 系统移植记录:64位gcc的几点注意
32位未修改源码与修改版的代码下载: git clone git@github.com:youzhonghui/MiniCRT.git MiniCRT 64位 linux 系统移植记录 MiniCRT ...
- 锁_rac环境kill锁表会话后出现killed状态(解决)
原创作品,出自 "深蓝的blog" 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/46876961 ra ...
- pgbouncer配置
DESCRIPTION pgbouncer is a PostgreSQL connection pooler. Any target application can be connected to ...
- 轮播图切换 纯html+js+css
如图所示. 该图片切换特效实现很简单,而且兼容性很好. html页面如下 复制代码代码如下: <div class="wrapper"> <div id=&quo ...
- Oracle数据库—— 事务处理与并发控制
一.涉及内容 1.理解事务的概念和几个特性. 2.熟练掌握事务管理命令的使用. 3.理解并发操作的概念和数据库锁的类型. 二.具体操作 (12.5 实验) 1. 分析以下代码,说出代码中的哪些部分体现 ...
- Google Proposes to Enhance JSON with Jsonnet
Google has open sourced Jsonnet, a configuration language that supersedes JSON and adds new features ...