2009-03-03 2 views
5

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

У меня есть подкаталог с 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> 

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

+0

Хотя AllowOverride None не должен останавливать чтение файлов .htaccess, я отмечаю, что ваша конфигурация не содержит ничего относительно mod_python (т. Е. AddHandler mod_python .py). Что находится в файле .htaccess? – Pesto

+0

.Htaccess: AddHandler mod_python .py PythonHandler mptest PythonDebug На и в mptest.py: от mod_python импорта апача Защиту обработчик (REQ): req.log_error ('обработчик') req.content_type = «текст/plain ' req.send_http_header() req.write («Hello World!») return apache.OK – Mitch

ответ

3

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

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

+0

Я думаю, вы правы, что проблема связана с моим виртуальным хостом. Если я перемещаю теги Directory, содержащие AllowOverride вне моих тегов VirtualHost, то он работает так, как ожидалось - .htaccess не включается. Спасибо, что предложили это. – Mitch

2

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 эс.

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

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

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

Смежные вопросы