首先起作用的是配置文件的.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 函数式替换单页规则的;
出处:http://www.cnblogs.com/huangcong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。