【发布时间】:2016-02-19 07:50:03
【问题描述】:
这与以下情况完全相同:(htaccess) How to prevent a file from DIRECT URL ACCESS?
但是,答案提供的任何代码都不适合我。我尝试了一个一个,然后尝试组合,但仍然无法正常工作。这是我的代码:
# prevent direct image url access
# ----------
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)://(www\.)?example\.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)://(www\.)?example\.com.*$ [NC]
# this not works
RewriteRule \.(png|gif|jpe?g)$ - [F]
# and this
RewriteRule \.(png|gif|jpe?g)$ - [F,NC]
# and this
RewriteRule \.(png|gif|jpe?g)$ https://example.com/wp-login.php [NC,R,L]
# even by combining them
# ----------
# /prevent direct image url access
案例模拟:
index.php 有 <img src="test.png" alt=""> 并且应该可以正常访问。要求是:http://example.com/test.png 不应被访问。
我在 wp-engine 中使用 WordPress,我认为 WordPres 的默认重写不会导致问题,因为来自答案的代码放在 WordPress 重写之上。
更新
我在 wp 引擎上的 Apache 2 上使用 PHP 版本 5.5.9-1ubuntu4.14
【问题讨论】:
-
你是如何测试它们的?您是否将图像嵌入到不允许的站点中?还是您只是尝试使用浏览器直接访问它们?
-
@GeraldSchneider,我更新了这个问题。我通过访问当前站点进行测试
-
请注意,编辑 htaccess 文件后,您应该在测试新规则是否有效之前清除缓存。
-
好吧,它们在本地或 wpengine 上都不起作用。 -_- 不知道为什么
标签: .htaccess mod-rewrite