2015-02-04 1 views
-2

Я пытаюсь написать файл .htaccess для своего веб-сайта, что предотвратит доступ к страницам и изображениям через прямой ввод URL-адресов, но будут предоставлены запросы на локальный хост. До сих пор я нашел этот код через некоторое прибегая к помощи:Предотвращение прямого ввода URL-адреса, но предоставление доступа к локальному хосту

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com.*$ [NC] 
RewriteRule \.(php|css|js|jpg)$ - [F] 

Проблема заключается мой сайт изображения защищены все в порядке, но когда я хочу, чтобы получить доступ к index.php из родительского каталога (Htaccess в моем подкаталоге, а не родительский), отображается ошибка 403 Forbidden.

Теперь я не совсем понимаю, что означают эти строки или как их подстроить, поэтому я не могу сказать прямо из-за ошибки. Может кто-нибудь помочь мне и сказать, что это на самом деле? Благодаря!

ответ

0

Либо ваши активы доступны, либо нет. Вы не можете обслуживать активы публично, не публиковав их публично. Вероятно, вы думаете, что «с localhost» означает, что кто-то уже «на вашем сайте»; это неправильное понимание того, как работает Интернет. Каждый актив запрашивается с сервера по URL-адресу, все запросы поступают от клиентов. Запросы не поступают из «вашего местного веб-сайта».

Если конечные пользователи должны иметь возможность видеть ваши активы, они должны иметь доступ к ним через URL-адрес, что означает, что они также смогут увидеть их при «прямом вводе URL-адреса». Там нет технической разницы.

+0

Означает ли это, что я не смогу помешать им получить доступ к некоторым активам, даже если они не вошли в систему? – Razor

+0

Нет, вы можете разрешить каждый запрос индивидуально, включая запросы к файлам активов. Однако, если вы управляете своим авторизацией на PHP, вам придется проксировать все запросы через PHP. Например. '/getasset.php? Файл = foo.css'. – deceze

Смежные вопросы