百度空间 | 百度首页 
 
查看文章
 
让apache忽略uri的大小写
2007-07-11 12:40

今日想让apache服务器忽略uri的大小写,也就是说http://www.abc.com/Abc/aBc.php这样的url地址能正确的转到http://www.abc.com/abc/abc.php,上网查了资料,有文章说可以用apache的speling模块http://httpd.apache.org/docs/2.2/mod/mod_speling.html),但遗憾的是,我觉得这个模块的效率不高,因为它会检测目录下的所有文件,而且上面的那个网址它也不能正确找到文件,这可能跟linux系统的文件是大小写敏感有关系。用speling模块能正确的让http://www.abc.com/Abc 跳到 http://www.abc.com/abc,但是它对http://www.abc.com/Abc/aBc.php这种并不生效。

之后我又查了rewrite模块的资料,很遗憾,我想不出有什么好办法跳转。可能是因为我对rewrite不熟,如果大家有什么好点子就跟我说下吧。

不过我的网站所有页面的名字都是小写的,所以我可以方便地用程序来实现这个功能。我编写了一个叫nofound.php的php,当apache找不到页面的时候就跳到这个php,然后这个php把用户请求的url转成小写的,如果转完发现新的url和旧的不一样那么就跳转到新的url,如果url确实不存在就跳到首页。程序实现如下:

<?php
/**
* @file        nofound.php
* @version     1.0
* @author      hyperjiang <
hyperjiang@gmail.com>
* @date        2007-07-11
* @brief       Try to redirect to correct url.
*/

$url = @$_SERVER['REQUEST_URI'];
if (empty($url)) {
header("Location: /");
exit;
}

$newurl = strtolower($url);
if ($url == $newurl) header("Location: /");
else header("Location: $newurl");
?>

然后修改apache的配置文件,加入这样的一行 ErrorDocument 404 "/nofound.php" ,这个表示当apache找不到页面的时候就跳转到nofound.php这个php。重启apache,大功告成:)


类别:大道至简 | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu