使用 .htaccess 将特定 URL 重定向到 404

Redirect specific URLs to 404 with .htaccess

我有一个包含 3 个链接的列表,我想参考 404 错误页面。

有没有办法在 .htaccess 文件中写入任何进入这些链接的人都将被重定向到错误 404?

我试过这段代码,但它不起作用:

RewriteCond %{THE_REQUEST} ^a [NC]
RewriteCond %{THE_REQUEST} ^b [NC]
RewriteCond %{THE_REQUEST} ^c [NC]
RewriteRule ^ - [R=404,L]

除非您有其他指令,否则您可以使用单个 RedirectMatch 指令来完成此操作。例如:

RedirectMatch 404 ^/(a|b|c)/$

任何 完全匹配 /a//b//c/ 的请求 URL(如您的示例)将已发送到您的 404 错误文档。

但是,如果您有现有的 mod_rewrite 指令,那么最好改用 mod_rewrite,以避免潜在的冲突(以及一般效率)。例如,以下内容需要靠近 .htaccess 文件的顶部:

RewriteRule ^(a|b|c)/$ - [R=404]

当使用带有 R 标志的非 3xx 代码时不需要 L 标志,因为它是隐含的。请注意,RewriteRule 指令没有斜杠前缀,而 RedirectMatch.


RewriteCond %{THE_REQUEST} ^a [NC]
RewriteCond %{THE_REQUEST} ^b [NC]
RewriteCond %{THE_REQUEST} ^c [NC]
RewriteRule ^ - [R=404,L]

这不起作用有两个原因:

  1. THE_REQUEST不仅包含请求的URL,还包含HTTP请求头的第一行。例如。 GET /a/ HTTP/1.1 - 因此 ^a 形式的正则表达式永远不会匹配。

  2. 默认情况下,所有条件(RewriteCond 指令)都是 AND,因此它永远不会是 a AND b AND C .您需要在前两个条件上使用 OR 标志来创建逻辑 OR.