使用 .htaccess 将特定 URL 重定向到 404
Redirect specific URLs to 404 with .htaccess
我有一个包含 3 个链接的列表,我想参考 404 错误页面。
https://example.com/a/
https://example.com/b/
https://example.com/c/
有没有办法在 .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]
这不起作用有两个原因:
THE_REQUEST
不仅包含请求的URL,还包含HTTP请求头的第一行。例如。 GET /a/ HTTP/1.1
- 因此 ^a
形式的正则表达式永远不会匹配。
默认情况下,所有条件(RewriteCond
指令)都是 AND,因此它永远不会是 a
AND b
AND C
.您需要在前两个条件上使用 OR
标志来创建逻辑 OR.
我有一个包含 3 个链接的列表,我想参考 404 错误页面。
https://example.com/a/
https://example.com/b/
https://example.com/c/
有没有办法在 .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]
这不起作用有两个原因:
THE_REQUEST
不仅包含请求的URL,还包含HTTP请求头的第一行。例如。GET /a/ HTTP/1.1
- 因此^a
形式的正则表达式永远不会匹配。默认情况下,所有条件(
RewriteCond
指令)都是 AND,因此它永远不会是a
ANDb
ANDC
.您需要在前两个条件上使用OR
标志来创建逻辑 OR.