Hy all,
我在Codeigneter玩游戏并试图制作某种相册只是为了好玩(在我真正开始之前更好地理解codeigneter)。
现在我在这里建立了一个测试网站: http://foal.scriptsenprogs.nl/
现在,用户可以在将来上传图片。我希望那个形象能够成为一种拯救......
所以如果有人使用这个链接: http://foal.scriptsenprogs.nl/media/img/albums/1.png
它应该被阻止(就像现在一样)。
我在.htacces文件中放了这行代码,放在/media/img/albums
文件夹中
<Directory "http://foal.scriptsenprogs.nl/media/img/albums" >
Options Includes
AllowOverride All
Order allow,deny
Deny from All
</Directory>
我必须承认我对.htaccess文件知之甚少,但这似乎有效(直接网址被阻止)。
在我的codeIgneter代码中,我使用它来将图像添加到网页:
$str .= '<div style="margin-top:20px;"><img width="200px" src="./media/img/albums/' . $imageStuff[$row['album_id']] -> img_id . '.' . $imageStuff[$row['album_id']] -> img_type . '" /></div>';
在.htaccess文件之前,它有效。但现在它没有用。
如果我检查chromes错误控制台,我会看到此错误:
GET http://foal.scriptsenprogs.nl/media/img/albums/1.png 404 (Not Found) foal.scriptsenprogs.nl:48
然后是404 Not Found
错误。但是,如果您检查URL,您会看到它被认为是绝对URL吗?但我插入了一个相对URL吗?
你们有什么想法如何解决这个问题?
编辑1 在子域的de webroot中,我有以下.htaccess文件:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|school|media|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
编辑2 为了澄清这个问题......
如果您在网站上(http://foal.scriptsenprogs.nl/),则必须使用相对路径显示图片。 (像这样:<img width="200px" src="./media/img/albums/1.png" />
)
但是如果你试图通过绝对路径访问图像,它必须被阻止(链接将是这样的:http://foal.scriptsenprogs.nl/media/img/albums/1.png)
答案 0 :(得分:0)
有时CI和相对网址不能很好地协同工作,请尝试使用base_url函数
'src="'.base_url().'media/img/albums/'
答案 1 :(得分:0)
您可以在现有的webroot/.htaccess
文件中添加新规则。
将RewriteEngine On
行后面的以下内容放在文件顶部。
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg)$ /404.html [L]
这限制了对域http://yoursite.com的任何jpg,gif等的访问,其他请求被重定向到404页面。
注意:如果您在本地服务器上进行测试,那么您将与您的网站位于同一个域中,因此很可能看起来没有发生任何事情。