У меня проблемы с директивой .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