当投掷403时投掷404响应

时间:2013-11-05 11:06:28

标签: php .htaccess exception symfony twig

我有下一条规则:

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

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

似乎是由于Twig异常模板。

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

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

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

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

2 个答案:

答案 0 :(得分:0)

你可以尝试这条规则:

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

答案 1 :(得分:0)

我发现了这个问题:

虽然/app/Resources/TwigBundle/views/Exception/是自定义异常页面的框架路径,但当异常来自.htaccess文件或Apache配置时,您还必须将路径指定为.htaccess文件或Apache配置,像这样:

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