为什么%{HTTP_HOST}在HTTP_HOST文字字符串工作时不起作用?

时间:2013-10-31 10:04:11

标签: apache .htaccess http-referer http-host

我有下一个Apache代码来防止热链接,它可以工作。

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

问题是两个:

1 。如果我将上述内容更改为:

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

它不起作用。 %{HTTP_HOST}等于itransformer(在我的localhost中),所以我不明白为什么它不能以这种方式工作。

2 即可。将显示默认的404页面,而不是所有其他404响应中显示的自定义404页面。这可以发生什么?

1 个答案:

答案 0 :(得分:0)

  1. 原因不在于您不能在RewriteCond的右侧使用这些Apache内部变量。

  2. 我刚注意到R=404。如果您需要自定义404处理程序,请确保在.htaccess:

    之上有类似这样的行
    ErrorDocument 404 /404.php