两年前写过一篇博文《Drupal中对404错误进行判断、重定向》,当时是在一个系列网站中采用自定义模块,在Module文件中构建了一个404错误的页面,在页面中对错误进行判断并302重定向到合适的内部页面。在博文下方及留言中也写了使用.htaccess进行错误处理的办法和例子。
除了站内的这种报错、跳转以外,也有站间的报错需要处理,例如http://chahaoba.com/ 这个站的最新日志信息中类似 http://chahaoba.com/1330719 这样的报错很多,其实正确的网址应该是http://www.chahaoba.com/1330719 ,也不知道什么原因网友会访问错误的网址。
我以前做过一个自定义的“页面未找到”页面,里面告诉网友这个网址没有找到,可以尝试带www的另外一个网址,但这样对网友来说比较不方便,比较是遇到一个报错页面,还需要额外进行点击。
今天把这个页面中的php代码进行了修改,直接判断带www的页面是否存在,如果存在就用301重定向跳转,如果不存在则按照常规说明“页面未找到”。
代码如下:
<?php $request_uri = $_SERVER['REQUEST_URI']; $url = 'http://www.chahaoba.com'.$request_uri; $header = get_headers($url, 1); if (isset($header[0])) { if ($header[0] == 'HTTP/1.1 200 OK' || $header[0] == 'HTTP/1.0 200 OK') { Header("HTTP/1.1 301 Moved Permanently"); Header("Location: $url"); } elseif (isset($header[1])) { if ($header[1] == 'HTTP/1.1 200 OK' || $header[1] == 'HTTP/1.1 200 OK') { Header("HTTP/1.1 301 Moved Permanently"); Header("Location: $url"); } } } $output = ''; $output = '对不起,'; $output .= '无法找到请求的页面 "'.$request_uri.'" 。'; print $output; ?>
这样应该可以起到很好的访问引导作用,用户甚至不会察觉到访问网址的变化,全部是自动进行的。👍
评论