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

apache - запрещен доступ к некоторым статическим файлам

У меня проблемы с директивой .htaccess. Я пытаюсь переписать URL для фреймворка Codeigniter.

На рабочем сервере все работает, как ожидалось, но я не могу правильно настроить собственный тестовый сервер.

Сервер тестирования:

Перезапись URL-адресов отлично работает, файлы php отображаются должным образом, но все файлы, включенные через HTML (css, js, img), не отображаются, поскольку они недоступны из-за:

403 Forbidden
You don't have permission to access /path/to/file/plugins-min.css
on this server.

вот мой файл .htaccess:

RewriteEngine On

# Do not enable rewriting for files or directories that exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# For requests that are not actual files or directories,
# Rewrite to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]

это конфигурация apache2 для моей папки с документами:

<Directory /document/folder/>
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

когда я установил AllowOverride к None т.е. статические файлы, не переписывающие URL-адреса, отображаются корректно.

Когда изображения загружаются с помощью скрипта, они отображаются на странице, даже если они имеют те же права / владельцев / группы, что и другие файлы, которые недоступны.

У всех на сайте одинаковые права и владельцы.

Надеюсь, мой вопрос достаточно ясен, и я ищу способ, чтобы все работало так, как ожидалось.

Я думаю, что в моей конфигурации apache есть что-то, что предотвращает 'включен HTML'файлы должны быть доступны, как говорится в журнале ошибок apache:

[Wed Aug 17 22:29:24 2011] [error] [client <MY IP>] client denied by server
configuration: /var/www/site.com/application/assets/js/admin.js, 
referer: http://<MY IP>/site.com/page/edit/

заранее спасибо

Найдите все .htaccess файлы с:

find /var/www/ -name .htaccess

Временно измените:

Order deny,allow
Allow from all

кому:

Order allow,deny
Allow from all

чтобы не было Deny правила, обработанные ранее.

Очень часто при использовании AllowOverride All находят файлы .htaccess в других каталогах выше, где вы работаете, которые влияют на вашу конфигурацию. Согласно ветке комментариев, публикующей этот ответ, чтобы собрать награду. Вот пример команды поиска:

найти DocumentRoot -name .htacccess -print

Распечатает любые другие файлы .htaccess.

Добавьте следующие правила в конфигурацию Apache внутри раздела:

Allow from 127.0.0.1
Allow from localhost