Относительный и абсолютный путь к изображению и .htaccess

Привет всем,

Я играю в 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, но это, кажется, работает (прямой 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 работало. Но сейчас это не работает.

Если я проверю консоль ошибок Chrome, я увижу эту ошибку:

GET http://foal.scriptsenprogs.nl/media/img/albums/1.png 404 (Not Found) foal.scriptsenprogs.nl:48

Значит, это ошибка 404 Not Found. Но если вы проверите URL-адрес, вы увидите, что он присвоен абсолютному URL-адресу? Но я правильно вставил относительный URL?

Любые мысли о вас, ребята, о том, как это исправить?

EDIT 1 В корневом каталоге поддомена у меня есть следующий файл .htaccess:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|school|media|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

EDIT 2 Чтобы прояснить вопрос, кое-что еще...

Если вы находитесь на веб-сайте ( http://foal.scriptsenprogs.nl/ ), изображение должно отображаться с помощью используя относительный путь. (например: <img width="200px" src="./media/img/albums/1.png" /> )

Но если вы пытаетесь получить доступ к изображению по абсолютному пути, оно должно быть заблокировано (тогда ссылка будет выглядеть примерно так: http://foal.scriptsenprogs.nl/media/img/albums/1.png )


person Mathlight    schedule 17.02.2013    source источник
comment
Я думаю, очевидный вопрос: существует ли 1.png в папке .../albums/?   -  person Felipe Alameda A    schedule 18.02.2013
comment
@faa, очевидно, но да, он существует. Это даже работало до того, как я поиграл с файлом .htaccess; P   -  person Mathlight    schedule 18.02.2013
comment
Единственное, что вам нужно в вашем /media/img/albums/.htaccess, это одна строка - deny from all   -  person Jeemusu    schedule 18.02.2013
comment
@Jeemusu, попробовал это, и это вроде как работает (все отрицает). Но я не могу показать изображение на веб-странице... И мне нужно это сделать.   -  person Mathlight    schedule 18.02.2013


Ответы (2)


Иногда CI и относительные URL-адреса плохо сочетаются друг с другом, попробуйте использовать функцию base_url.

'src="'.base_url().'media/img/albums/'
person Rick Calder    schedule 17.02.2013
comment
Сделано, но не работает. Он возвращает http://foal.scriptsenprogs.nl/ то, что правильно. Но я хочу заблокировать такие URL-адреса с помощью /media/img/albums/1.png. Но я хочу показать их на веб-странице. Так что я надеялся, что смогу сделать что-то вроде ./media/img/albums/1.png - person Mathlight; 18.02.2013

Вы можете добавить новое правило в существующий файл webroot/.htaccess.

Поместите следующее после строки RewriteEngine On ближе к началу вашего файла.

RewriteCond %{HTTP_REFERER} !^http://(.+\.)?yoursite\.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*\.(jpe?g|gif|bmp|png|jpg)$ /404.html [L]

Это ограничивает доступ к любым файлам jpg, gif и т. д. в домене http://yoursite.com, остальные запросы перенаправляются на 404 стр.

ПРИМЕЧАНИЕ. Если вы тестируете это на локальном сервере, вы будете находиться в том же домене, что и ваш сайт, поэтому, скорее всего, будет казаться, что ничего не происходит.

person Jeemusu    schedule 18.02.2013
comment
Хай, спасибо за ответ. Я отредактировал свой вопрос и добавил содержимое webroot .htaccess. как вы сказали, я вставил ваши три строки после первой строки и изменил yoursite на scriptsenprogs. И я удалил содержимое .htaccess в /media/img/albums/. Но я вижу обе картинки (прямая ссылка в новой вкладке и включение на веб-страницу... - person Mathlight; 18.02.2013
comment
Ваш сайт на локальном сервере? То есть это сервер в вашей локальной сети или на вашем компьютере? - person Jeemusu; 18.02.2013
comment
Это на реальном сервере. адрес foal.scriptsenprogs.nl Я стараюсь делать как можно меньше местный из-за странных вещей иногда :D - person Mathlight; 18.02.2013
comment
Не сделал этого, потому что думал, что это: (.+\.) для поддомена. Теперь строка выглядит так: RewriteCond %{HTTP_REFERER} !^http://(.+\.)?foal\.scriptsenprogs\.nl/ [NC] но я все еще могу просматривать оба изображения... - person Mathlight; 18.02.2013
comment
если написать неверный домен, изображение становится непросматриваемым? - person Jeemusu; 18.02.2013
comment
Только изображение на сайте, изображение в новой вкладке ( foal.scriptsenprogs.nl /media/img/albums/1.png ) тогда не блокируется... Странно, правда? или это хорошо??? Спасибо за терпение кстати ;) - person Mathlight; 18.02.2013
comment
И я не хочу тогда наоборот, чтобы изображение новой вкладки было заблокировано, а не на сайте... - person Mathlight; 18.02.2013