首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为未使用ErrorDocument的选定URL自定义404

为未使用ErrorDocument的选定URL自定义404
EN

Stack Overflow用户
提问于 2022-01-10 16:18:55
回答 1查看 154关注 0票数 0

我试图为文档或文件夹、文件或链接显示自定义404页,这些文件或链接可能存在,也可能不存在,但出于某种目的,我仍然希望向访问者显示404的消息。

我检查了Setting a custom 404 page for a specific URL in htaccessSetting a custom 404 page for a specific URL in htaccess

代码:

代码语言:javascript
复制
RewriteRule ^foo.html$ /spoof404.txt [L,R=404,NC]
RewriteRule ^hello$ /spoof404.txt [L,R=404,NC]
RewriteRule ^file/example.php$ /spoof404.txt [L,R=404,NC]

使用这些代码,我成功地获得了404 Status in header,但它没有显示spoof404.txt的内容。

注意:

  1. ,我不是在找Errordocument,像404或者403
  2. ,我不是要重定向
  3. ,这不是一个重复的问题。在询问之前,我已经搜索了堆栈溢出的其他部分。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-10 16:32:22

我不是在找像404或403这样的错误纪念碑

为什么不行?你就是这么做的。在Apache上没有其他方法(不使用另一个服务器端脚本)触发404 HTTP状态并提供自定义响应。

例如:

代码语言:javascript
复制
ErrorDocument 404 /spoof404.txt

RewriteRule ^foo\.html$ - [NC,R=404]
RewriteRule ^hello$ - [NC,R=404]
RewriteRule ^file/example\.php$ - [NC,R=404]

当您请求/foo.html时,它将触发404,而/spoof404.txt将被提供服务。

在3xx范围外指定状态ode时,将忽略替换字符串(因此使用了单个- -连字符)。在这种情况下,L标志也是多余的,因为它是在指定非3xx R代码时隐含的。

更新:

如何使用像example.com/something.php?something=tokens&othertoken=token这样的参数进行阻塞

RewriteRule指令只与URL路径匹配,以匹配查询字符串(第一个?之后的所有内容),然后需要一个附加条件(RewriteCond指令),并检查QUERY_STRING服务器变量。

例如,要匹配准确的URL (尽管情况不敏感)并触发404:

代码语言:javascript
复制
RewriteCond %{QUERY_STRING} ^something=tokens&othertoken=token$ [NC]
RewriteRule ^something\.php$ - [NC,R=404]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70655593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档