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 函数式替换单页规则的;




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/4770551.html,如需转载请自行联系原作者

相关文章
|
应用服务中间件 Apache nginx
LNMP环境中WordPress程序伪静态解决方案
LNMP环境是目前我们国内站长使用的Linux VPS配置环境中使用较多的。作为新手我们很可能会看到老左类似的"LNMP安装教程"然后依葫芦画瓢的去安装VPS。我们是否有发现环境中我们较为常用的wordpress伪静态不生效,内页出现404错误页面。
2091 0
|
搜索推荐
wordpress搏客伪静态固定链接设置失败的解决办法
说句不怕大家笑话的话,做了四五年的网站了却从来不会设置网站的伪静态链接,一般都是程序自带的。即使是动态的链接我也不在乎,在乎又有什么办法呢,不会呀。今天我用一天的时间来研究wordpress设置伪静态链接的方法,没想到研究了一天,晚上的时间终于研究好了,所以才想写篇文章,希望能帮助到和比尔云遇到一样...
3111 0
|
Linux Windows 搜索推荐
Linux主机WordPress伪静态设置方法
WordPress实现伪静态利于搜索引擎收录,但有不少新人朋友还是始终无法成功设置WordPress伪静态。 WordPress已经给出了几种URL伪静态形式,但都不很理想,我们希望的URL形式为: 域名/分类别名/文章ID
1895 0
|
Linux Windows 搜索推荐