2010-08-04 3 views
0

Я переместил все файлы из проекта, который должен быть доступен извне, в один каталог public - чтобы вместо скрытых каталогов, которые должны оставаться скрытыми, я мог бы перечислить доступные белые списки.Показать файлы из другого каталога с помощью mod_rewrite

Однако я не могу заставить Apache переписать этот вид URLs:

  • www.example.com/images/flower.jpg

принести

  • <DOCUMENT ROOT>/общественность /images/flower.jpg

только рациональное решение, которое я придумал что-то среди этих линий:

RewriteCond public\/%{REQUEST_FILENAME} -f #if a file exists in the public dir,... 
RewriteRule .* public/$0 [L]    #display it 

Unsurprisingly, он не работает, точнее, RewriteCond часть, я не могу получить его, чтобы соответствовать.

Я полностью в убытке, мог бы кто-нибудь помочь?

В качестве побочного вопроса, как вы отлаживаете .htaccess конфигураций? Я не могу решить проблему, если не знаю, что и где она.

ответ

1

Если вы хотите проверить существующий файл с -f, вам необходимо предоставить абсолютный путь файловой системы, как это:

RewriteCond %{DOCUMENT_ROOT}/public%{REQUEST_URI} -f 
RewriteRule !^public/ public%{REQUEST_URI} [L] 

В противном случае использовать -F сделать проверку с помощью подзапроса:

RewriteCond public%{REQUEST_URI} -F 
RewriteRule !^public/ public%{REQUEST_URI} [L] 
Смежные вопросы