• 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



  • 相关阅读:
    Windows 科研软件推荐
    有关Python 包 (package) 的基本知识
    《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
    Coursera助学金申请模板
    《Using Databases with Python》 Week2 Basic Structured Query Language 课堂笔记
    Jupyter 解决单个变量输出问题
    解决 pandas 中打印 DataFrame 行列显示不全的问题
    《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记
    缓存击穿及解决方案
    jvm垃圾收集器
  • 原文地址:https://www.cnblogs.com/linewman/p/9918844.html
Copyright © 2020-2023  润新知