1

大家好,

我在 Codeigneter 中玩耍并尝试制作某种相册只是为了好玩(在我真正开始之前更好地了解 codeigneter)。

现在我在这里建立了一个测试网站:http: //foal.scriptsenprogs.nl/

现在的问题是用户将来可以上传图像。我希望该图像是某种保存...

因此,如果有人使用此链接: http: //foal.scriptsenprogs.nl/media/img/albums/1.png

它应该被阻止(就像现在一样)。

我在/media/img/albums文件夹中的 .htacces 文件中有这行代码

<Directory "http://foal.scriptsenprogs.nl/media/img/albums" >
    Options Includes
    AllowOverride All
    Order allow,deny
    Deny from All
</Directory>

我必须承认我对 .htaccess 文件知之甚少,但这似乎有效(直接 url 被阻止)。

在我的 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

4

2 回答 2

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 页面。

注意:如果您在本地服务器上对此进行测试,您将与您的站点在同一个域中,因此很可能看起来什么都没有发生。

于 2013-02-18T08:52:00.323 回答
0

有时 CI 和相对 url 不能很好地结合在一起,尝试使用 base_url 函数

'src="'.base_url().'media/img/albums/'
于 2013-02-17T22:57:00.933 回答