使用.htaccess覆盖HTTP响应代码 [英] Overwrite HTTP response code using .htaccess
本文介绍了使用.htaccess覆盖HTTP响应代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用.htaccess将HTTP标头响应代码覆盖到另一个响应代码。
我想更改
HTTP
404
至200 OK
HTTP
403
至200 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屋!
查看全文