zoukankan      html  css  js  c++  java
  • PHP实现根据状态码跳转指定页面

    比如 404,503 等页面的指定跳转。

    当然有多种方案:
    代码判断
    服务器配置
    htaccess 文件配置

    当 在TP中实现出现问题。
    代码的话 影响系统代码效率
    服务器配置会遭 伪静态的语句冲突
    htaccess 文件配置 同理(如果去掉伪静态则可以正常生效)

    解决:
    当然TP中的404可以结合  empty控制器指定返回404码并重新跳转指定页面实现(参考http://www.thinkphp.cn/info/273.html),但是其本身的服务器404页面(如访问不到资源的请求404就难以实现了,这个和503道理一样),可是503就不能按照如上方案实现了。
    意思是只要配置一不能生效就没法实现了。

    所以请求的503和404目前只能通过代码判断实现,弊端就是效率问题,既然503代码判断了,那么404也就可以一起判断了, empty 的跳转处理显得多余。


    放于入口跳转的代码(考虑到效率问题,慎用,为了优化影响效率得不偿失):
    if($_GET['k'] != 'h'){//注意防止死循环
    $info = get_headers('http://ng.lh.nd.com?k=h');
    if(stripos($info['0'],'503')!== false){
    header('Location:http://www.baidu.com');
    }
    }

    如下是冲突不生效的配置文件:
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php/$1 [L]
    ErrorDocument 404 http://www.baidu.com

    TP  empty跳404的实现:
    • class EmptyAction extends Action{ 
    •     function _empty(){ 
    •         header("HTTP/1.0 404 Not Found");//使HTTP返回404状态码 
    •         $this->display("Public:404"); 
    •     } 
    • } 

    学习参考资料:
    http://www.poluoluo.com/jzxy/201405/273706.html
    http://zhidao.baidu.com/link?url=WQLuo0QaEXipZJ_BVwWXMn17BQi1fjrmFLLqDhTGJMewq-
    wEXzOaLSlsXAExloCm-FQr7Kxp44ejpfR0G_vhcrKMIm_NGxltnXiM2Vsrwny
    http://www.thinkphp.cn/topic/9867.html
    http://www.thinkphp.cn/info/273.html



  • 相关阅读:
    敏捷开发方法综述
    RBAC权限控制系统
    Thinkphp 视图模型
    Thinkphp 缓存和静态缓存局部缓存设置
    Thinkphp路由使用
    Thinkphp自定义标签
    异步处理那些事
    Thinkphp 关联模型
    Thinkphp 3.1. 3 ueditor 1.4.3 添加水印
    数据库组合
  • 原文地址:https://www.cnblogs.com/linewman/p/9918844.html
Copyright © 2011-2022 走看看