2012-03-21 2 views
0

Привет У меня есть следующие файлы структура:моды переписана для Zend Framework, с 2-мя общими папками

/public_html(docroot) 
    - /public 
     /css 
     /js 
     index.php 
    - /application 
    - /library 

Примечание: Я не могу изменить эту структуру. Что я хочу: все запросы к файлам должны открывать файлы из общей папки, все остальные запросы должны идти в index.php. В настоящее время у меня есть следующий файл .htaccess в public_html:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

Но это работает только с http://hostname/public. Как он может работать без public? Благодарю.

+0

Вы можете изменить последнюю RewriteRule для 'RewriteRule^* $ /public/index.php [NC, L]'.. Я не уверен в предыдущем /, поэтому, если он не работает, пропустите его. – dbrumann

+0

Не работает. См. Мой ответ ниже. – pltvs

+0

Почему вы не можете установить DocumentRoot в 'public_html'? Таким образом, все файлы в public_html являются общедоступными и обслуживаются как есть, а ваши 'приложения',' library' и другие папки скрыты, что дает вам дополнительную безопасность. –

ответ

1

Я нашел ответ:

RewriteEngine On 
RewriteCond %{REQUEST_URI} !public/ 
RewriteRule (.*) /public/$1 [L] 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 
Смежные вопросы