2009-03-03 29 views
5

Đây là vấn đề ngược lại so với hầu hết những gì tôi đã đọc. Tôi đang chạy Ubuntu 8.04 trên một cá thể Amazon với Apache 2.2.8 và tôi không thể tìm ra lý do tại sao thiết lập AllowOverride thành None cho root không dừng tệp .htaccess của tôi.Tại sao tôi không thể tắt .htaccess trong Apache?

Tôi có một thư mục con với hello.py trong đó và tệp .htaccess. Khi tôi duyệt đến tập tin, nó hoạt động tốt với modpython phục vụ các tập tin. Nếu tôi đặt một số rác trong .htaccess tôi nhận được một lỗi máy chủ, vì vậy tôi biết các tập tin htaccess đang được sử dụng. Ngoài ra nếu tôi xóa tệp .htaccess, hello.py không còn là máy chủ của modpython - thay vào đó, trình duyệt sẽ cố mở nó.

Trong một trong các trang web của tôi khả dụng (được liên kết trong các trang web được bật), tôi có "AllowOverride None" cho thư mục gốc. Tôi nghĩ rằng điều này sẽ ngăn chặn .htaccess từ được bao gồm từ gốc và tất cả các thư mục con của nó mà nên gây hello.py không được phục vụ bởi mod_python. Tuy nhiên, nó vẫn tiếp tục được phục vụ tốt và tôi có thể kiểm tra .htaccess vẫn đang được bao gồm bởi vì khi tôi sửa đổi nó, tôi thấy kết quả trong trình duyệt của tôi.

Có thể có điều gì đó mà tôi không hiểu về tệp của tôi trong trang web đã bật. Đây là tệp tôi đang sử dụng:

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

Cảm ơn bạn đã được trợ giúp.

+0

Trong khi AllowOverride None không nên dừng đọc tệp .htaccess, tôi lưu ý rằng cấu hình của bạn không chứa gì liên quan đến mod_python (tức là, AddHandler mod_python .py). Có gì trong tệp .htaccess? – Pesto

+0

.htaccess: AddHandler mod_python py PythonHandler mptest PythonDebug On và trong mptest.py: từ apache mod_python nhập khẩu def handler (req): req.log_error ('xử lý') req.content_type = 'text/plain ' req.send_http_header() req.write ("Hello World!") return apache.OK – Mitch

Trả lời

3

Lý do tệp không được phục vụ qua mod_python khi bạn xóa .htaccess là do thiết lập cho mod_python nằm trong đó. Nếu bạn di chuyển nội dung đó vào tệp có sẵn trên trang web của mình, bạn có thể xóa .htaccess, nhắm mắt làm ngơ vấn đề và gọi nó là một ngày.

Nếu điều đó không thỏa mãn bạn, thì tại sao .htacess đang được đọc, tôi không thể nói. Bạn đúng là AllowOverride None nên ngăn tệp này được đọc. Bạn đã xem xét khả năng mà bạn đã làm hỏng một cái gì đó khi thêm trang web ảo? Hãy thử ném một số rác vào cấu hình và xem nếu nó phàn nàn, chỉ để chắc chắn nó đang được đọc ở tất cả.

+0

Tôi nghĩ rằng bạn đang đúng là vấn đề là với máy chủ ảo của tôi. Nếu tôi di chuyển các thẻ thư mục chứa AllowOverride bên ngoài các thẻ VirtualHost của tôi thì nó hoạt động như mong đợi - .htaccess không được bao gồm. Cảm ơn bạn đã đề xuất điều này. – Mitch

2

AllowOverride chỉ được phép trong các phần <Directory>, vì vậy bạn đã làm mọi thứ đúng.

Một vấn đề mà bạn có thể có là (khác) <Directory> -số đặt AllowOverride thành một thứ khác với None. Điều đó sẽ ghi đè cài đặt cho các thư mục con này. tôi sử dụng

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

và trong /var/www (docroot của tôi) Tôi có thể sử dụng .htaccess es.

Lý do tại sao mod_python không hoạt động nữa nếu bạn xóa của bạn .htaccessmod_python cài đặt thường là trong .htaccess tập tin.

Nếu bạn cần thêm thông tin, vui lòng gửi cho chúng tôi cấu hình của bạn.

PS: Trong thực tế, docuementation liên kết ở trên nói rằng bạn nên bao giờ thiết AllowOverride một cái gì đó không None trong <Directory />.

Các vấn đề liên quan