【问题标题】:Throwing 404 response when should be throwing 403应该抛出 403 时抛出 404 响应
【发布时间】:2013-11-16 05:46:10
【问题描述】:

我有下一条规则:

RewriteCond %{HTTP_REFERER} ^$ [OR]
RewriteCond %{HTTP_REFERER} !^https?://itransformer.*$ [NC]
RewriteRule \.(gif|jpe?g|png|wbmp)$ - [R=403,L]

在主 .htaccess 文件中。 当任何人尝试热链接图像时,他将得到 403 响应。但是,他收到了 404 响应。如果我评论上面的行,我不会收到错误。

似乎是由于 Twig 异常模板所致。

我正在覆盖 Twig 异常模板中的一些错误模板。 我已经通过添加文件成功覆盖了 404 错误模板:/app/Resources/TwigBundle/views/Exception/error404.html.twig

并试图覆盖 403 错误模板。尝试添加:/app/Resources/TwigBundle/views/Exception/error403.html.twig 但未显示。

Apache 配置中没有ErrorDocument,也没有.htaccess 文件。

为什么会抛出 404 响应,什么时候应该抛出 403?

【问题讨论】:

  • 你能测试一下:ReWriteRule .*\.(gif|jpe?g|png|wbmp)$ - [F]
  • 我已经有一段时间没有使用 apache了,但是你的 RewriteRule 不应该有一个 URI 可以重定向到吗?或者'-'字符在这里暗示什么?
  • @Nealio - - 表示没有 URI 重定向。它应该只是抛出一个没有 URI 重定向的 403 响应。

标签: php .htaccess exception symfony twig


【解决方案1】:

你能试试这个规则吗:

RewriteCond %{HTTP_REFERER} !^https?://mysite\.com [NC]
RewriteRule \.(gif|jpe?g|png|wbmp)$ - [NC,F]

【讨论】:

  • [NC,F] 标志没有任何变化。另一方面,当HTTP_REFERER 为空白时,我也想重写。所以第一行应该像问题一样。
  • OK 已编辑并删除第一个条件。但如果它仍然抛出 404,那么它一定是由于你的框架。
  • 可能。但我不知道如何实现它。我正在做文档所说的。
【解决方案2】:

我发现了问题:

虽然/app/Resources/TwigBundle/views/Exception/ 是自定义异常页面的框架路径,但当异常来自.htaccess 文件或Apache 配置时,您还必须在.htaccess 文件或Apache 配置中指定路径,如下所示:

ErrorDocument 403 /errorTemplatesPath/error403.html.twig
ErrorDocument 404 /errorTemplatesPath/error404.html.twig

【讨论】:

    猜你喜欢
    • 2012-06-28
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 2019-04-12
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多