使用.htaccess覆盖HTTP响应代码 [英] Overwrite HTTP response code using .htaccess

查看:42
本文介绍了使用.htaccess覆盖HTTP响应代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用.htaccess将HTTP标头响应代码覆盖到另一个响应代码。

我想更改

HTTP404200 OK

HTTP403200 OK

.htaccess代码:

    RewriteEngine On

#ErrorDocument
ErrorDocument 403 /forbidden.html
ErrorDocument 404 /notfound.html
ErrorDocument 500 /servererror.html

# Disable directory browsing 
Options -Indexes

#Change status code  to 200 OK
<IfModule mod_headers.c>
  <If "%{REQUEST_STATUS} in { '404','403', '500' }">
      Header set HTTP/1.1 "200 OK"
      Header set HTTP/2 "200 OK"
  </If>
</IfModule>

轻松使用PHP:header("Status: 200 OK");

但我想使用.htaccess执行此操作。您知道如何覆盖HTTP响应代码

注意:我不是在寻找重定向。

推荐答案

这确实是一个非常有趣的问题,我花了几个小时浏览文档并多次测试才得出以下解决方案。

将此代码段添加到文档根目录.htaccess:

# serve /index.php for 200
ErrorDocument 200 /index.php

# serve FallbackResource with status=200 to handle 404
FallbackResource /index.php

# declare ErrorDocument for all the error codes you want to handle
# note that dummy file or directory doesn't exist.
# This will set REDIRECT_STATUS to 403
ErrorDocument 403 /dummy

RewriteEngine On

# force Status=200 if REDIRECT_STATUS is 403
RewriteCond %{ENV:REDIRECT_STATUS} =403
RewriteRule ^ - [L,R=200]

这篇关于使用.htaccess覆盖HTTP响应代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆