【问题标题】:rewrite image path to another path and deny from all the original path将图像路径重写为另一个路径并拒绝所有原始路径
【发布时间】:2016-12-26 20:56:08
【问题描述】:

抱歉,如果我的标题不足以描述我的问题。

我正在尝试使用 htaccess Deny from all 锁定对网站特定部分(管理区域)的访问。这个被拒绝区域内的资产仍然需要在前端访问,所以我进行了一些重写,直到添加了Deny from all

我的图片实际上住在这里:/wordpress/wp-content/uploads/

但我希望它们可以从这里访问:/media-uploads/

我使用了以下 htaccess 代码,效果很好:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^media-uploads/(.*\.(jpg|jpeg|gif|bmp|png))$ wordpress/wp-content/uploads/$1 [L]`

通过以上内容,我可以通过网址/media-uploads/image.jpg 访问/wordpress/wp-content/uploads/image.jpg

我还想做的是将Deny from all 应用于/wordpress/ 目录。如果我添加它,它会通过拒绝访问来工作,但它也会破坏图像重写,因此对/media-uploads/image.jpg 的请求会向我显示 403 禁止页面,因为它应该在/wordpress/ 区域中。

有人可以帮我吗?我有点手忙脚乱。

谢谢。

【问题讨论】:

  • /wordpress/wp-content/uploads/ 目录中的.htaccess 带有Allow from all 行应该覆盖/wordpress/ 中的行
  • @apokryfos 这很棒,而且很有效。但理想情况下,我希望该图像只能通过 /media-uploads/image.jpg 访问,而不能通过 /wordpress/wp-content/uploads/image.jpg 访问。

标签: php regex apache .htaccess mod-rewrite


【解决方案1】:

要阻止对原始 uri 的访问,您可以在 RewriteRule 上方使用以下条件

RewriteCond %{THE_REQUEST} /wordpress/wp-content/uploads/ [NC]
RewriteRule ^ - [R=403,L]

如果客户端请求 /wordpress/wp-content/upload/foobar,这将返回 403 错误

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    相关资源
    最近更新 更多