Я знаю, что это окажется чем-то действительно глупым, но я не могу этого найти. Все было отлично, пока я не обновился до OS X 10.6.2 (Snow Leopard) и поставляемого Apache 2.2.13. Я заменил все файлы httpd conf собственными, которые раньше работали нормально. Все отлично, кроме одного: Apache возвращает ошибку 404 для любых запросов к / assets / *. Если я переименую каталог с «assets» на что-нибудь еще, он будет работать нормально. Я схожу с ума, пытаясь выяснить, почему он чувствителен к строке «assets». У меня нет файлов .htaccess. Все разрешения проверены. Я просмотрел все файлы conf (включая vhosts) на предмет того, что может вызвать это, и не нашел. Здесь любой причина, по которой Apache будет рассматривать «активы» иначе, чем что-либо еще? Есть ли что-нибудь для проверки, кроме файлов conf и .htaccess?
Ладно, это было странно. VirtualHost DocumentRoot установлен в / var / www / haystack, а целевой файл (например) /var/www/haystack/asssets/test.html. Но есть еще один VirtualHost в / var / www / assets. У меня было следующее RewriteRule на виртуальном хосте haystack:
RewriteRule /test /assets/test.html
Вышеупомянутое правило не удалось (404). Оказалось, что вместо поиска /var/www/haystack/assets/test.html он пытался найти /var/www/assets/test.html, которого не существует. Я подтвердил это переименованием / var / www / assets, что устранило проблему. Что еще странно, так это то, что у меня есть два Mac, оба на Snow Leopard и оба с идентичными версиями Apache и идентичными файлами конфигурации. Эта проблема появляется только на одном из них. Я изучил документацию Apache и не могу понять, почему RewriteRule, определенный в одном VirtualHoust, должен ссылаться на DocumentRoot для другого.
Есть ли у вас конкретный параметр в каком-либо из файлов conf, для которого есть директивы, связанные с этим каталогом? Можете ли вы найти все файлы conf с помощью команды grep для этой фразы, чтобы узнать, что-то происходит? Что говорят ваши журналы ошибок, когда вы пытаетесь перейти в этот каталог?