Назад | Перейти на главную страницу

Apache запрещает прямой доступ с исключением

Мне нужно запретить прямой доступ ко всем папкам в определенном каталоге (* backend) за одним исключением. Есть один каталог (* загрузки), который должен быть доступен через браузер.

Макет может быть примерно таким:

*backend/     
  |-admin    
  |-system    
  |-themes    
  |-*uploads

Я знаю, что вы можете запретить любой доступ, поместив htaccess в бэкэнд со следующим:

Order Deny,Allow
Deny From All

Кроме того, вы можете переопределить это поведение, поместив другой htaccess, в данном случае в загружает, с участием:

Allow From All

Это не работает, поскольку ресурсы в темах недоступны для моих скриптов. Что было бы правильно htaccess как выглядит комбо?


[РЕДАКТИРОВАТЬ]

Я должен добиться этого с помощью htaccess, изменение http.conf не вариант.

Изменение htaccess, как показано ниже, и добавление одного файла в темы почти дает желаемый результат. Проблема в том, что: файлы под темы должны быть защищены от прямого доступа, но оставаться доступными для обслуживания веб-сайта.

бэкэнд

#backend
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from xx.xx.xx.xx

загружает

#uploads
Order Deny,Allow
Allow from all

темы

#themes
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from xx.xx.xx.xx
<Files *.*>
    Order Deny,Allow
    Allow From All #Here, I would need the files to not be accessible through browser.
</Files>

Попробуйте это в своем httpd.conf (или аналогичный файл конфигурации)

<Location /backend>
    Order deny,allow
    deny from all
</Location>

<Location /backend/uploads>
    Order allow,deny
    allow from all
</Location>

Если вам нужен доступ к /backend с самого сервера вы можете дополнительно добавить следующую строку в первом абзаце выше, запретить от всех.

allow from 127.0.0.1, <server-ext-ip>

Еще кое-что. На всякий случай важен порядок абзацев.