gpt4 book ai didi

Apache:强制使用 404 状态代码

转载 作者:行者123 更新时间:2023-11-28 22:48:26 27 4
gpt4 key购买 nike

我正在使用一个我无法修改的 tomcat 应用程序,尽管我可以完全控制在它前面设置的 apache(使用反向代理)。

当遇到不再有效的 URL(即 ID 不再存在或格式错误)时,应用程序将执行 302 重定向到 pagenotavailable.jsp

我需要找到一种方法让这些返回 404,以便这些 URL 从搜索引擎索引中删除。

我想到的一种可能性是设置一个 mod_rewrite 重定向,从 pagenotavailable.jsp 到我制作的名为 404.html 的页面:

RewriteEngine on
RewriteRule ^/pagenotavailable\.jsp /404.html [NC,R=404,L]

或者只是这样,因为 404.html 已经设置为 ErrorDocument:

RewriteRule ^/pagenotavailable\.jsp$ - [R=404]

这显示了我的自定义 404.html 页面的内容,但是 URL 没有更新(它仍然是 pagenotavailable.jsp ),状态码仍然是 302。

对于我没有得到 404 的任何想法,以及任何替代方法,我们都表示赞赏!

最佳答案

如果您使用 302 进行响应,则客户端将始终更新其 URL(例如在 URL 栏中)以显示 .../pagenotavailable.html。如果你想让它消失,你将不得不再次重定向到你的首选 URL。唯一的其他选择是修改应用程序,使其不执行重定向,而是执行完全在服务器端处理的“转发”。但是你特别提到你不能修改网络应用程序,所以...

如果状态代码仍然是 302,我会感到非常惊讶...当客户端收到 302 响应时,它应该对 执行 GET >Location302 响应 header 中提供。如果有的话,如果响应代码未设置为 404,我希望您的 404.html 内容得到 200 响应。

[R=xxx] 标志告诉 mod_rewrite 发出重定向,它必须是 3xx 响应代码。您可以使用 404,但您应该是 aware of the caveats .该页面说明了 Location 标题发生了什么(即什么都没有),它说它将暗示 [L] 标志,但它没有说明什么响应代码将实际发送给客户端。

如何使用 RewriteRule 将页面重写为实际上不存在的内容?

RewriteRule ^pagenotavailabe.jsp$ /does-not-exist.html

...然后让您的标准 404 处理程序处理错误(并返回 404.html 的内容加上 404 协议(protocol)响应)。

关于Apache:强制使用 404 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48977829/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com