【问题标题】:htaccess codes did not workhtaccess 代码不起作用
【发布时间】: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


【解决方案1】:

你的规则基本上对我有用,除了一件事:

(s) 并没有像你想象的那样做。

RewriteCond %{HTTP_REFERER} !^http(s)://(www\.)?example\.com [NC]

用括号定义一个组,此时没有任何意义。如果您删除(s),它适用于http。

如果你也想使用 https,你必须这样写:

RewriteCond %{HTTP_REFERER} !^https?://(www\.)?example\.com [NC]

? 将使前面的字符(或组,如果在括号中)可选。

【讨论】:

  • 呃,我再次更新了这个问题。所以,我只是删除(s)作为你的建议。但仍然不能在 localhost 和 wp-engine 上同时执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多