Почему я не могу отключить .htaccess в Apache? - PullRequest
5 голосов
/ 03 марта 2009

Это проблема, противоположная большинству, о которых я читал. Я запускаю Ubuntu 8.04 на экземпляре Amazon с Apache 2.2.8, и я не могу понять, почему установка AllowOverride на None для root не препятствует включению моего файла .htaccess.

У меня есть подкаталог с hello.py в нем и файл .htaccess. Когда я просматриваю файл, он прекрасно работает с modpython, обслуживающим файл. Если я помещаю мусор в .htaccess, я получаю сообщение об ошибке сервера, поэтому я знаю, что файл .htaccess используется. Также, если я удаляю файл .htaccess, hello.py больше не является сервером для modpython - вместо этого браузер пытается открыть его.

На одном из моих сайтов, доступных (ссылки на него включены), у меня есть «AllowOverride None» для корневого каталога. Я подумал, что это предотвратит включение .htaccess из корня и всех его подкаталогов, что должно привести к тому, что hello.py не будет обслуживаться mod_python. Тем не менее, он по-прежнему работает нормально, и я могу проверить, что .htaccess все еще включен, потому что, когда я изменяю его, я вижу результаты в своем браузере.

Может быть, есть что-то, чего я не понимаю в моем файле на сайтах с поддержкой. Это файл, который я использую:

NameVirtualHost *:8080 
<VirtualHost *:8080>
<Directory />
AllowOverride None
</Directory>
</VirtualHost>

Спасибо за любую помощь.

Ответы [ 2 ]

3 голосов
/ 03 марта 2009

Причина, по которой файл не обслуживается через mod_python при удалении .htaccess, заключается в том, что в нем находится настройка для mod_python. Если вы перенесете этот материал в файл, доступный для сайтов, вы можете удалить .htaccess, закрыть глаза на проблему и назвать это днем.

Если вас это не устраивает, тогда я не могу сказать, почему вообще читают .htacess. Вы правы, что AllowOverride None должен предотвращать чтение файла. Рассматривали ли вы возможность, что вы что-то напортачили при добавлении виртуального сайта? Попробуйте добавить мусор в конфиг и посмотрите, будет ли он жаловаться, просто чтобы убедиться, что он вообще читается.

2 голосов
/ 03 марта 2009

AllowOverride разрешено только в <Directory> -секциях, поэтому вы все сделали правильно.

Одна из проблем, с которой вы можете столкнуться, состоит в том, что другие (под -) <Directory> -секции устанавливают AllowOverride в нечто отличное от None. Это заменит настройку для этих подкаталогов. Я использую

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>
<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride AuthConfig 
    Order allow,deny
    allow from all
</Directory>

и в /var/www (мой docroot) я могу использовать .htaccess es.

Причина, по которой mod_python больше не работает при удалении .htaccess, заключается в том, что установка mod_python обычно находится в .htaccess файлах.

Если вам нужна дополнительная информация, отправьте нам свою конфигурацию.

PS: На самом деле приведенная выше документация говорит, что вы должны никогда установить AllowOverride на что-то, что не None в <Directory />.

...