У меня такая ситуация. Я разрабатываю приложение в Zend Framework и htaccess, указывая каждый запрос на index.php. Если какой-либо файл или каталог существует на пути запроса, htaccess разрешает доступ к этим файлам, таким как css, js, images и т. Д. …
Теперь у меня есть такая ссылка:
example.com/profile/martin-slicker-i231
С Zend Router он указывает на учетную запись контроллера и файл вида действий. Я хочу добавить некоторый аватар для своих пользователей, и я создал каталог в общей папке (чтобы изображения были доступны на сервере, например, css и js). Каталог называется «profile», а подкаталог – «martin-slicker-i231». Весь путь видимый сервером:
public/ .htaccess index.php profile/ martin-slicker-i231/ avatar-small.jpg
Проблема в том, что когда я указываю браузер на example.com/profile/martin-slicker-i231, он указывает мне на этот каталог, а не на контроллер и действие. Когда я удаляю папку с пользователем, тогда поток переходит к контроллеру и действию. Как настроить .htaccess, поэтому example.com/profile/martin-slicker-i231 будет указывать на контроллер и действие, но запрос на example.com/profile/martin-slicker-i231/avatar-small.jpg указывает на файл. Вот мой .htaccess
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Может ли кто-нибудь помочь?
Просто удалите часть, в которой говорится, что она должна обслуживать каталоги:
RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L]
Теперь он будет обслуживать файлы (с размером> 0) и символические ссылки напрямую, но отправлять ссылки каталогов и другие URL-адреса в ваше приложение
В соответствии с документами Apache следующее отключит списки каталогов
<Directory /path/to/directory> Options -Indexes </Directory>
Вы также можете посмотреть документацию для mod_autoindex