将图像路径重写到另一个路径并拒绝所有原始路径

时间:2016-08-19 16:02:31

标签: php regex apache .htaccess mod-rewrite

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

我正在尝试使用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]`

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

访问/media-uploads/image.jpg

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

任何人都可以帮助我吗?我有点松散了。

感谢。

1 个答案:

答案 0 :(得分:1)

要阻止访问orignal uri,您可以在RewriteRule上方使用以下条件

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

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