Zend Framework - Забранете достъп до папки, различни от публична папка

Всичко,

Имам следната структура на приложението Zend:

helloworld
 - application
     - configs
     - controllers
     - models
     - layouts
 - include
 - library
 - public
    - .htaccess
    - index.php
 - design
 - .htaccess

В момента, ако потребителят посети http://localhost, моите .htaccess файлове по-горе се уверяват, че заявката е насочена към http://localhost/public автоматично. Ако потребителят посети друга папка освен публичната папка от адресната лента, той получава списък с директории на тази папка.

Как мога да се уверя, че отказвам достъп на потребителя до всяка друга папка с изключение на публичната? Искам потребителят да бъде пренасочен към публичната папка, ако посети друга папка. Въпреки това, ако базовият код поиска нещо от други папки, (напр.: ), той пак трябва да работи..

Благодаря


person Jake    schedule 06.05.2010    source източник


Отговори (1)


Най-лесният метод (и методът, с който настройката на Zend Framework е проектирана да се използва) е само да поставите съдържанието на публичната папка под DocumentRoot. Всичко останало трябва да излиза извън DocumentRoot.

Ако не можете да направите това по някаква причина, можете да поставите .htaccess във всяка от другите поддиректории с: Order Allow,Deny Deny from all

Отговор на коментарите:

Вашето приложение не трябва да се нуждае от директорията на приложението/контролера (или която и да е директория с изключение на „публична“), за да бъде под DocumentRoot. PHP включването може да бъде извън DocumentRoot (обикновено).

Ако следвате типичната препоръчана структура на папките на приложението Zend Framework правилно, всички ресурси, които трябва да бъдат директно достъпни от браузъра (т.е. изображения/флаш/мултимедия, javascripts, css и index.php), трябва да са в публичната директория.

Също така, по отношение на .htaccess, трябва да имате нужда само от .htaccess файл в най-горното ниво на дървото на директориите, така че във вашия пример по-горе бихте поставили по един във всяко от: приложение, включване, библиотека и дизайн.

person AllenJB    schedule 06.05.2010
comment
Така че искате да кажете, че коренът на моя документ трябва да сочи към C:\\xampp\\htdocs\\xampp\\helloworld\\public\\ . Това не работи за мен, защото ако кодът поиска /application/controller/action, той не може да го намери.. - person Jake; 06.05.2010
comment
.htaccess файл във всяка директория не изглежда обещаващо. има много много поддиректории - person Jake; 06.05.2010