加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Apache报告不存在的WordPress URL的200状态

发布时间:2020-12-13 13:54:00 所属栏目:PHP教程 来源:网络整理
导读:WordPress .htaccess通常具有以下重写规则: # BEGIN WordPressIfModule mod_rewrite.cRewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]/IfModule 当我在我的网站上访问
WordPress .htaccess通常具有以下重写规则:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

当我在我的网站上访问一个不存在的URL时,这个重写规则被命中,重定向到index.php,并提供我的自定义404.php模板文件.发送回客户端的状态代码是正确的404,如此HTTP Live Headers输出示例所示:

http://www.borngeek.com/nothere/

GET /nothere/ HTTP/1.1
Host: www.borngeek.com
{...}

HTTP/1.1 404 Not Found

但是,Apache在我的服务器日志中使用200状态代码报告整个交换,如下面的日志片段所示(为简单起见,已修剪):

{...} "GET /nothere/ HTTP/1.1" 200 2155 "-" {...}

这对我来说是有意义的,因为原始请求被重定向到存在的页面(index.php).有没有办法强制Apache将交换报告为404?

我的问题是来自Bad Guys的虚假请求在我使用的各种服务器统计软件(AWStats,Analog等)中显示为“成功请求”.我很乐意让它们在Apache端显示为404s,以便从生成的统计报告中过滤掉它们.

我尝试将以下行添加到我的.htaccess中,但它没有效果(我猜测的原因与之前的重定向规则相同):

ErrorDocument 404 /index.php?error=404

有没有人有一个聪明的方法来解决这个烦恼?

附加信息:

> OS是Debian 6.0.4,Apache版本看起来是2.2.22-3(托管在DreamHost上)
>发送回客户端的404正在由WordPress设置(即我不是在任何地方手动调用header())

尝试在RewriteRule行上将[L]更改为[R = 404,L].这将向客户端和服务器日志发送404.为避免显示默认错误页面,您可以使用ErrorDocument 404 /index.php?error=404呈现您之前尝试过的ErrorDocument尝试.

您还可以使用WP htaccess Control插件来帮助管理跨升级的htaccess文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读