【问题标题】:200 OK with htaccess for 404 & 403 status [duplicate]200 OK with htaccess for 404 and 403 status [重复]
【发布时间】:2022-01-08 21:23:24
【问题描述】:

我正在尝试将 HTTP STATUS404403 更改为 200 OK

使用 PHP,这很容易做到,但问题是我的网站是 .html,由于某种原因我无法将其更改为 .php

代码(PHP):

header("Status: 200 OK");

我想在.htaccess 上也一样。因此它会自动将 HTTP 响应代码更改为 200 Ok 用于 404403

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>

【问题讨论】:

  • 目前您的 .htaccess 中的 404 设置如何?
  • @nice_dev ErrorDocument 404 /notfound.html 像这样
  • 因此,如果找不到某个 URL,则返回 notfound.html。为除了 404 之外在服务器上找不到的文档发送 200 状态的原因可能是什么?
  • @nice_dev 是的,如果内容或 URL 不存在,那么它返回 notfound.html404 响应代码,我希望它覆盖 404 响应代码到 200 OK跨度>
  • @nice_dev 明白了。我会等待你的回复。感谢您的帮助:)

标签: php apache .htaccess mod-rewrite httpresponse


【解决方案1】:

这相对简单。您可以提及完整的 URL,而不是文档的本地路径,因为请求被 重定向 到此页面以返回 200 ok 状态代码。所以,你的 .htaccess 看起来像

RewriteEngine On

#ErrorDocument
ErrorDocument 403 https://your_site.com/forbidden.html
ErrorDocument 404 https://your_site.com/notfound.html
ErrorDocument 500 /servererror.html

# Disable directory browsing 
Options -Indexes

【讨论】:

  • 使用此代码,如果有人访问example.com/anything-not-in-website,那么它将显示deals_page.html 页面的内容,并以200 OK 响应而不是404 - 对吧?
  • 如何使用403200 OK 的响应代码执行相同操作?
  • @shanmugapradeep 是的,它适用于 404,您可以在您的网站上进行测试。对于 403,不应该这样做,因为它是一个权限问题。我宁愿建议您显示适当的错误消息,不要让使用您的系统的用户感到困惑。
  • 没问题,伙计。您已尽力而为,我感谢您宝贵的时间并帮助我找到解决方案。
  • @shanmugapradeep “不允许访问此服务” - 如果这似乎是一个静态的 .html 站点,首先如何触发此“403”? (虽然我在你的earlier (dupe) question 上问过这个问题,但你无法提供答案。)关键是,如果这是由你的应用程序触发的(毕竟,还有什么会触发这个?)那么你不能用标准覆盖它Apache config/.htaccess. 中的模块
猜你喜欢
  • 2020-09-02
  • 1970-01-01
  • 2022-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多