乐铺的服务器不支持 apache url rewrite,所以之前的网址都很“丑陋”,比如:
http://www.loopo.cn/items.php/110
http://www.loopo.cn/forum.php/1/100
因为这个原因,被几个朋友BS了几次……
今天在DB的时候,忽然想到一个办法:乐铺的服务器是支持自定义404页面的,这样的话,就可以把所有的请求定位到这个404页来处理了,即所有的页面“都是404”,然后再统一由404.php来处理重定向。
花了差不多十分钟,实现了一下,现在乐铺的页面url是类似这样的了:
http://www.loopo.cn/items/110
http://www.loopo.cn/forum/1/100
会好看一些,不知道会不会有什么副作用。
核心代码差不多类似于:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function _404() { $url = $_SERVER['REQUEST_URI']; if ($tmp = explode("/", $url)) { array_shift($tmp); $_SERVER['PATH_INFO'] = join("/", $tmp); parse_str($_SERVER['REDIRECT_QUERY_STRING'], $_REQUEST); parse_str($_SERVER['REDIRECT_QUERY_STRING'], $_GET); } $rewrite[] = array('|^/whatnew/?|i', 'whatnew.php'); $rewrite[] = array('|^/whathot/?|i', 'whathot.php'); $rewrite[] = array('|^/whatmiss/?|i', 'whatmiss.php'); foreach ($rewrite as $v) { if (preg_match($v[0], $url)) { @header("HTTP/1.1 200 OK"); include ROOT.$v[1];exit; } } } |
UPDATE:在测试的时候,发现404头信息已经发出来了,这样的话,可能会有被搜索引擎忽略的危险,后来又把代码改进了一下。加了一个200的头信息进去,不知道还会不会有问题,持续跟踪中……
Comments 4
我跟踪了一下,实际访问的时候没有收到404的头信息,所以应该没问题
Posted 04 Jul 2006 at 12:01 am ¶HTTP/1.1 200 OK
嗯,有点意思
Posted 27 Aug 2006 at 9:24 pm ¶问题是,没法接收post数据
Posted 28 Aug 2006 at 9:12 pm ¶是的,post数据是目前唯一存在的问题。
Posted 28 Aug 2006 at 9:35 pm ¶Post a Comment