Wordpress URL 不返回 404 页面
Posted
技术标签:
【中文标题】Wordpress URL 不返回 404 页面【英文标题】:Wordpress URLs not returning 404 Pages 【发布时间】:2017-05-23 00:41:59 【问题描述】:我需要一些关于 WordPress 的帮助。
我已经彻底清除了黑客攻击,Google 已经删除了“此网站可能被黑客入侵”标志。
黑客向 Google 提交了大量网址,每个有效网址的末尾都包含一个随机字符串。这些在谷歌搜索中显示为日语链接。
列出的 URL 显示为:
www.example.co.uk/?WGlaVUdsVVNHUnNXVzFzY2xwVE1YbFphVGg1VFZSSmVFOVVTVFZQUjJNOWNFUT14b0g
如果我点击链接,它会显示网站正确的主页,而不是显示 404 页面。
如果我转到www.example.co.uk/thispagedoesnotesist
,它会显示 404 错误就好了。
有没有办法让带有这些随机 URL 字符串的页面显示 404 错误?
任何帮助或建议都会很棒。
【问题讨论】:
【参考方案1】:您可以使用类似于.htaccess
中的以下 mod_rewrite 指令的方式将包含长随机查询字符串的 URL 强制为 404。这需要在您现有的 WordPress 指令之前进行:
RewriteCond %QUERY_STRING ^\w30,$
RewriteRule ^$ - [R=404,L]
对包含 30 个或更多字母/数字的查询字符串的文档根(主页)的请求然后提供 404。
但是,如果这些是 URL 中的 日文 字符(而不是您的示例中的 a-z),则上述内容可能不匹配,因此请尝试以下操作:
RewriteCond %QUERY_STRING ^[^=]30,$
匹配除=
之外的所有字符。
更新:要匹配最后一个可选 =
,那么您可以在上述正则表达式中的$
之前包含=?
。例如^\w30,=?$
或^[^=]30,=?$
。
如果您根本不使用查询字符串,那么您可以将 RewriteCond
指令更改为以下内容,它匹配 any 查询字符串(即至少 1 个字符)。
RewriteCond %QUERY_STRING .
【讨论】:
先生,您真了不起。这正是我需要的!谢谢!最后一个问题。我注意到如果 URL 以 = 结尾,则 URL 不会重定向到 404 页面。有没有办法在最后包含带有 = 的 URL?再次感谢! 不客气。我已经更新了关于最后匹配可选=
的答案。
太好了。太感谢了。这也适用于其他随机字符吗?我注意到其中带有 % 的 URL 没有被重定向到 404。我会重定向所有查询,但我认为 Contact Form 7 插件在按下表单提交按钮时会使用查询。再次感谢您的所有时间。真的很感激。
更新:请忽略以上内容。我更改了条件以匹配您提到的第二个条件,然后为 = Working Perfectly 添加了额外的条件:)
先生,如果我可以请您喝一杯,我会的。非常感谢您的帮助!一切都按要求工作。【参考方案2】:
问题是这些链接指向带有参数的主页。这些随机文本字符串不会作为 url 段或页面传递,因为它们前面带有 ?
。
您无能为力。如果我在你的位置,我只会报告这些链接并要求从谷歌方面删除它们。到头来别担心。
【讨论】:
以上是关于Wordpress URL 不返回 404 页面的主要内容,如果未能解决你的问题,请参考以下文章
如何修复此 WordPress 功能使其不返回 404 页面?
在我的 URL 末尾添加 /?name=someonesname 时出现 Wordpress 404 错误
wordpress 2003 系统 怎么设置 404 错误页面 都返回200 代码 带默认的404.php 文件