当然有多种方案:
代码判断
服务器配置
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{ -
_empty (){ -
header 404 );//使HTTP返回404状态码Not Found" -
$this -
- }
学习参考资料:
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