图像相对和绝对路径和.htaccess

时间:2013-02-17 22:17:15

标签: image .htaccess codeigniter relative-path absolute-path

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

2 个答案:

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

注意:如果您在本地服务器上进行测试,那么您将与您的网站位于同一个域中,因此很可能看起来没有发生任何事情。

相关问题