查看文章 |
今日想让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 $url = @$_SERVER['REQUEST_URI']; $newurl = strtolower($url); 然后修改apache的配置文件,加入这样的一行 ErrorDocument 404 "/nofound.php" ,这个表示当apache找不到页面的时候就跳转到nofound.php这个php。重启apache,大功告成:)
|