【问题标题】:Redirect based on rules and error type htaccess基于规则和错误类型 htaccess 的重定向
【发布时间】:2021-05-20 22:24:20
【问题描述】:

我一直在尝试拼凑我的 .htaccess 文件,但我没有找到很多关于我想要完成的任务或我是否想太多的信息。

我正在使用以下内容来禁用目录浏览,但我想将其重定向到我创建的自定义 404 错误页面。

# Disable Directory Browsing
Options All -Indexes

拒绝访问我正在使用的目录或文件

####
# Deny access to certain directories that SHOULD NOT be exposed.
####
RewriteRule ^error/ - [L,R=403]
RewriteRule ^assets/ - [L,R=403]
RewriteRule ^plugins/ - [L,R=403]
RewriteRule ^libraries/ - [L,R=403]
RewriteRule ^includes/ - [L,R=403]
RewriteRule ^bootstrap.php - [L,R=404]

所有这些都可以正常工作,但我想重定向到脚本文件夹中的自定义错误页面

example.com/errors/

我发现的只有这个

ErrorDocument 404 /errors/error-404.html

但未能成功将任何错误重定向到我创建的错误。

【问题讨论】:

  • 嗨,有趣,也许这个语法可能对stackoverflow.com/questions/2447106/…有帮助
  • 您在大多数这些指令中触发了 403,但您只为 404 定义了 ErrorDocument/bootstrap.php 也不会触发 404 吗?我也很好奇,当您已经禁用目录浏览(-Indexes)时,为什么需要为“某些目录”显式触发 403?这些目录中有DirectoryIndex 文档吗?大概你也有一个RewriteEngine On 指令?
  • @IronMan 该链接问题中的语法与此处使用的语法相同。 (?)
  • (澄清一下……您不是在这里“重定向”。ErrorDocument 由内部子请求提供服务,与提供 Apache 默认错误时相同。您可以触发“重定向” ,但这不适用于此处。)
  • 您的.htaccess 文件中还有哪些其他指令?您看到的 Apache 响应的确切措辞是什么?澄清一下,你有一个 /error/errors 目录 - 第一个是你阻止的,第二个包含你的错误文档?

标签: apache .htaccess mod-rewrite


【解决方案1】:

如果没有看到您看到的实际响应或完整的.htaccess 文件,我猜您正在阻止访问包含您的自定义错误文档的/errors 目录。错误文档本身需要可公开访问(尽管您可以使用技巧来阻止访问并提供适当的 HTTP 状态代码)。

如果您阻止对错误文档的访问,则 Apache 将回退到默认的 Apache 响应,并带有如下所示的附加消息:

此外,在尝试使用 ErrorDocument 处理请求时遇到“4xx/5xx 错误”错误。

【讨论】:

    猜你喜欢
    • 2016-07-01
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多