你在这里


Drupal修改“页面未找到”判断跳转到其它网站

James Qi 2015年5月13日 - 18:17 发布

  两年前写过一篇博文《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;
?>

  这样应该可以起到很好的访问引导作用,用户甚至不会察觉到访问网址的变化,全部是自动进行的。yes

自由标签:

添加新评论

Plain text

  • 不允许HTML标记。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
验证码
本问题用于测试您是否为人类访问者,避免自动垃圾发贴。
图形验证
键入显示在图片中的字符