【问题标题】:error status message 403 to 423错误状态消息 403 到 423
【发布时间】:2013-11-19 19:40:57
【问题描述】:

当在 htaccess 中拒绝某人时,我如何将默认的 403 forbidden 更改为 423 locked

例如,通常当您在 htaccess 中使用 deny from 时,apache 会出现 403 forbidden 错误。
有没有办法设置实际提供的错误消息来代替403 forbidden

我还没有尝试过,但我想也许通过在 htaccess 中定义自定义错误消息可能会起作用,
例如,

ErrorDocument 403 /path/423.shtml

但有件事告诉我,我的服务器默认会覆盖它并仍然使用403 error
不,我没有 shell 访问权限或对 apache 安装文件的访问权限。

谢谢。

【问题讨论】:

    标签: apache .htaccess


    【解决方案1】:

    你已经接近了,但你需要一个脚本或其他东西来设置标题响应。单独使用ErrorDocument 仍会导致服务器返回403 Forbidden,即使返回的内容将是/path/423.shtml 中的内容。您可以使用 php 或其他东西来覆盖它。所以使用错误文档:

    ErrorDocument 403 /path/423.php
    

    然后在423.php文件中:

    <?php
    
    header("HTTP/1.1 423 Locked");
    
    // whatever other content you want returned
    ?>
    

    【讨论】:

    • ,如果我猜对了,在您的示例中,id 将使用 php 文件作为错误页面。而不是我的 shtml 页面。我在 shtml 页面中使用了其他代码,我怀疑这些代码可以在 php 文件中按原样工作。就像显示用户 IP 地址和浏览器信息的变量以及元刷新重定向一样。所以我不确定 php 文件是否会是一个好主意与否。
    • @TheFuz 有两种方法,您可以在 shtml 中包含 php,或者让 shtml 由 php 脚本加载。请参阅:stackoverflow.com/questions/839272/…stackoverflow.com/questions/6537674/…
    【解决方案2】:

    如果你想做到“纯粹”(没有 PHP 或 Perl 代码),你需要使用 mod_rewrite 并利用 [R=XXX] 表示重定向,XXX 是你要使用的代码,请参阅: http://httpd.apache.org/docs/current/rewrite/flags.html#flag_r

    【讨论】:

    • 所以在问题中使用[R=XXX] 和我的示例,我将如何让它与[R=423,L] 一起工作,所以它从默认的403 重定向到新的423 抱歉我不是一个代码大师。
    • @TheFuz mod_rewrite 可以使用R 标志向响应代码发送特定请求,但它不能拦截已经传出的 403 响应并更改它们(可以是 403 出于任何原因,比如不是能够查看目录索引)。
    • @Jon Lin,谢谢,R flag 可以用作任何参考吗?或只是系统错误消息。我有一些自定义错误页面,例如bots.shtmlspam.shtml[R=bots][R=spam] 会以与正常错误状态相同的方式工作吗?
    • @TheFuz 如果你想加载“bots”,那么RewriteRule ^some-pattern$ /bots.html [L,R=123],其中“123”是响应码。并非所有这些都可以工作,并且它的行为没有很好的记录
    猜你喜欢
    • 2018-12-12
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2020-09-28
    • 1970-01-01
    相关资源
    最近更新 更多