Andy's Blog » » 说说Rewrite

说说Rewrite

今天想为自己的CMS规划一套可以后台动态管理网站URL结构的方案,实现目标如下:
1. 所有URL设置,后台可视化完成
2. 整站永远只有200和301的header,或者永远只有200
3. 实现静态和Rewrite切换开关
4. 除了后台,没有动态链接

因此 ErrorDocument永远都不会在我的.htaccess或http.conf里出现

实现起来,有2种方法
方案1. 使用apache的Rewrite,直接在.htaccess里写入所有的规则
方案2. 还是使用apache的Rewrite,不过,是把所有的请求,转到php程序里去处理

URL的规则是存在数据库里的,所以如果需要修改网站URL规则和结构的时候
首先从后台去修改规则,存到数据库
然后从数据库里取出规则
然后以上2个方案对应如下:
方案1. 用PHP去读写.htaccess文件,因此有可能会碰到权限问题
方案2. 什么也不用做,因为请求是由php来动态处理的

不过,方案1还是有它的优点的,具体我就不说了,用者自知.

于是想起去看看WordPress是怎么写的,WordPress是将所有的请求,交给PHP处理的,看它的.htaccess就知道了
花了几小时看WordPress的源代码,头大!感觉结构有点乱.
从index.php开始,一直看到了wp-setting.php的266行,才来了个
$wp_rewrite = & new WP_Rewrite();

继续看rewrite.php , 这个类解析了所有的请求,包括动态请求,因为WordPress得考虑不能支持Rewrite的用户,所以代码量会比较大.其他文件的一些代码也是如此.
另外,在看代码的时候,发现有些函数写得很有用.

没有动态链接,当然是有利于SEO的
但是说回SEO,我一开始的需求就有问题,我要"动态管理网站URL",就是说,我会去改网站的URL,但这是不利于SEO的
所以,最好是一开始就规划好,不要动它,包括写程序也是这样

今天码字不少了,写到这吧,写得有点乱...

Incoming search terms:

Tags: 规划, rewrite

本文地址: http://www.21andy.com/new/20071218/725.html