2009-03-03 66 views
5

這是我讀過的大多數相反的問題。我在使用Apache 2.2.8的亞馬遜實例上運行Ubuntu 8.04,我無法弄清楚爲什麼爲root設置AllowOverride爲None不會阻止包含我的.htaccess文件。爲什麼我不能在Apache中禁用.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> 

感謝您的任何幫助。

+0

雖然AllowOverride None應該阻止它讀取.htaccess文件,但我注意到您的配置中沒有包含有關mod_python(即AddHandler mod_python .py)的內容。 .htaccess文件中有什麼? – Pesto 2009-03-03 15:35:09

+0

。htaccess的: 的AddHandler的mod_python的.py PythonHandler mptest PythonDebug論 和在mptest.py: 從mod_python的進口阿帕奇 DEF處理程序(REQ): req.log_error( '處理') req.content_type =「文本/ plain' req.send_http_header() req.write(「Hello World!」) return apache.OK – Mitch 2009-03-03 15:37:42

回答

3

當您刪除.htaccess時,不通過mod_python提供文件的原因是因爲mod_python的設置位於其中。如果你將這些東西移動到你的網站可用文件中,你可以刪除.htaccess,對問題視而不見,然後每天給它打電話。

如果這不能滿足你,那麼至於爲什麼.htacess正在被讀取,我不能說。你是正確的AllowOverride無應該阻止文件被讀取。你有沒有考慮過在添加虛擬網站時搞砸了某些東西的可能性?嘗試扔一些垃圾到配置中,看看它是否抱怨,只是爲了確保它被讀取。

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(我的文檔根目錄),我可以使用.htaccess ES。

之所以如果您刪除.htaccessmod_python設置通常是.htaccess文件mod_python不工作了。

如果您需要更多信息,請將您的配置發送給我們。

PS:其實上面鏈接的docuementation說,你應該永遠設置<Directory />AllowOverride東西不None

相關問題