2009-01-28 72 views
0

我的意思是第一个返回的报头中的 HTTP/1.1 XXX YYYYYYY我如何动态修改

头 我可以修改其他所有与mod_headers中 但希望能够返回一个状态200 403错误页面到一个特定的用户代理,不会显示我的403页的文本{它显示一个备用页面}

只是询问是否有人知道env-var或标题名称我可以在apache.conf中进行更改这个头以任何方式{一旦我有,我可以制定使其用户代理特定位

+0

这是专门处理一个用户代理{not IE} {移动代码转换器},它不会将403文本传递给人类用户{并且403页面提供了如何取消禁止的详细信息} – 2009-01-29 00:35:28

回答

0

你可以建立一个PHP脚本为你的403错误页面,并用该脚本修改标题:

把这样的线在你的.htaccess或者Apache的配置文件:

ErrorDocument 403 /path/to/your/error/script.php

而且上述下面的php文件:

<?php 
if($_SERVER['HTTP_USER_AGENT'] == 'FooBot 1.2') { 
    header("HTTP/1.0 200 OK"); 
} 
?> 

还是做同样的事情在您的首选语言。

+0

它看起来像唯一的选择,但宁愿默认服务的HTML而不是PHP作为处理PHP {来自测试}的开销是相当大的403请求转到99以前被禁止和恶意机器人 – 2009-01-29 00:16:12

+0

目前在www上演示您的解决方案。 alandoherty.net 和是它允许自定义403页要对谷歌的无线转码器渲染 www.google.com/gwt/m 但等着看是否有人知道的方式通过的http.conf做到这一点mod_headers或其他如果不是,我会标记你的答案为最好 – 2009-01-29 04:03:15

1

这不是一个标题,它是状态行。

说谎反应的状态往往会导致问题,例如,链接检查器将错过报告这样的错误。你正在依靠一个阅读200页的人来理解它,但是计算机协议的重点在于它们也可以被计算机理解。你应该尝试解决问题而不是隐藏它。

这听起来像你碰到了Internet Explorer对“友好”错误页面的坚持。您可以通过填充错误页面来解决该问题,使其大于512字节,这会导致Internet Explorer显示错误页面而不是自己的错误页面。