Cách đặt tất cả AllowOverride


161

Tôi muốn đặt AllowOverride allNhưng tôi không biết làm thế nào. Tôi đã tìm thấy đoạn mã sau bằng cách tìm kiếm trên google và dán nó vào .htaccess:

<Directory>
        AllowOverride All
</Directory>

Nhưng sau khi dán nó tôi bắt đầu nhận được "Internal Server Error"

Bất cứ ai có thể hướng dẫn tôi nơi để đặt mã này hoặc làm thế nào để làm điều đó?


3
Lệnh <Directory>này yêu cầu một đối số đường dẫn.
FKEiNET

Câu trả lời:


317

Trong trường hợp bạn đang sử dụng Ubuntu, hãy chỉnh sửa tệp /etc/apache2/apache2.conf(ở đây chúng tôi có một ví dụ về /var/www):

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

và thay đổi nó thành;

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

sau đó,

sudo service apache2 restart

Bạn cũng có thể cần phải làm sudo a2enmod rewriteđể kích hoạt viết lại mô-đun.


55
Tôi cũng cần phải sử dụng sudo a2enmod rewrite, sau đó nó làm việc. Trên Ubuntu 14.04 LTS. Hy vọng nó sẽ hữu ích cho một số người.
Jonauz

2
Lạ thật ... khi tôi làm điều này tôi gặp lỗi máy chủ nội bộ. Điều này có cho thấy lỗi trong tệp .htaccess nằm ở /var/www/.htaccess không? Chuyển apache2, conf lại thành AllowOverride Không sửa lỗi nhưng không cho phép viết lại URL.
o_O

Trong Ubuntu 12.04. Tôi tìm thấy tệp này tại / etc / apache2 / site-
Available

Làm cách nào tôi có thể ghi đè lên tệp này từ một tệp riêng biệt? Tôi có thể thấy rằng có một IncludeOptional conf-enabled/*.confdòng cuối cùng của apache2.conftập tin của tôi . Nhưng có vẻ như đó apache2.conflà ưu tiên thay thế.
JohnnyQ

Điều này làm nên điều kỳ diệu cho tôi. Sau khi cập nhật máy chủ debian của công ty tôi từ wheezy sang jessie, mọi thứ trong apache ngừng hoạt động và sau khi thêm nó, mọi thứ bắt đầu hoạt động trở lại.
periket2000

51

Mục tiêu chính AllowOverridelà để người quản lý các tệp cấu hình chính của apache (phần được tìm thấy trong / etc / apache2 / chủ yếu) để quyết định phần nào của cấu hình có thể được thay đổi động trên cơ sở mỗi đường dẫn bởi các ứng dụng.

Nếu bạn không phải là quản trị viên của máy chủ, bạn phụ thuộc vào Cấp độ AllowOverride mà các quản trị viên cho phép bạn. Để họ có thể ngăn bạn thay đổi một số cài đặt bảo mật quan trọng;

Nếu bạn là người quản lý cấu hình apache chính, bạn nên luôn luôn sử dụng AllowOverride Nonevà chuyển tất cả ví dụ google_basing bạn tìm thấy, dựa trên các tệp .htaccess sang Directorycác phần trên các tệp cấu hình chính. Vì nội dung .htaccess cho một .htaccesstệp trong /my/path/to/a/directorygiống như một <Directory /my/path/to/a/directory>hướng dẫn, ngoại trừ việc .htaccessthay đổi cấu hình yêu cầu theo yêu cầu HTTP động là một cái gì đó làm chậm máy chủ web của bạn. Luôn thích cấu hình tĩnh mà không cần .htaccesskiểm tra (và bạn cũng sẽ tránh các cuộc tấn công bảo mật bằng các .htaccessthay đổi).

Bằng cách trong ví dụ của bạn, bạn sử dụng <Directory>và điều này sẽ luôn sai, các hướng dẫn thư mục luôn chứa một đường dẫn, như <Directory />hoặc <Directory C:>hoặc <Directory /my/path/to/a/directory>. Và tất nhiên điều này không thể được đặt trong một .htaccessnhư một .htaccessgiống như một hướng dẫn Directory nhưng trong một tập tin có trong thư mục này. Tất nhiên bạn không thể thay đổi AllowOverridetrong .htaccesskhi hướng dẫn này đang quản lý mức độ bảo mật của .htaccesstệp.


17

Goto your_severpath/apache_ver/conf/ Mở tệp httpd.conftrong Notepad.

Tìm dòng này:

#LoadModule vhost_alias_module mô-đun / mod_vhost_alias.so

Xóa biểu tượng băm:

Các mô-đun LoadModule vhost_alias_module / mod_vhost_alias.so

Sau đó đi đến <Directory />

và đổi thành:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Sau đó khởi động lại máy chủ cục bộ của bạn.


Công việc hoàn thành! Ty ơi!
James Walker

6
NB Order allow,denyAllow from alldành cho Apache 2.2 trở về trước. Với Apache 2.4, hai dòng này được thay thế bằng Require all grantednhư trong các câu trả lời khác.
FKEiNET

13

Trên Linux, để thư giãn quyền truy cập vào tài liệu gốc, bạn nên chỉnh sửa tệp sau:

/etc/httpd/conf/httpd.conf

Và tùy thuộc vào cấp độ thư mục bạn muốn thư giãn truy cập, bạn phải thay đổi chỉ thị

AllowOverride None

đến

AllowOverride All

Vì vậy, giả sử bạn muốn cho phép truy cập vào các tệp trên thư mục / var / www / html, bạn nên thay đổi các dòng sau từ:

<Directory "/var/www/html">
 AllowOverride None
</Directory>

đến

<Directory "/var/www/html">
 AllowOverride All
</Directory>

8
và khởi động lại máy chủ sau
Daniel

Sau một trăm lần nhân đôi .htacces của tôi - đây là giải pháp! Cảm ơn rât nhiều. Tôi nghĩ, "tất cả" là giá trị mặc định của cấu hình apache.
Matthias Kleine

Ngoài ra, đề cập đến Linux trong câu trả lời của bạn là không tốt. Mặc dù điều này đã cũ, tôi chỉ muốn làm rõ rằng những gì bạn đang nói là dành cho các bản phân phối dựa trên Redhat
Chi.CJRajeeva Lochana

11

Nếu bạn đang sử dụng Linux, bạn có thể chỉnh sửa mã trong thư mục của

/etc/httpd/conf/httpd.conf

Bây giờ, ở đây tìm dòng mã giống như

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Thay đổi AllowOveride none thành AllowOveride All

Bây giờ bạn có thể đặt bất kỳ loại quy tắc nào trong tệp .httacess của mình trong các thư mục của mình nếu bất kỳ hệ điều hành nào khác chỉ cần cố gắng tìm tệp của httpd.conf và chỉnh sửa nó.


Kể từ 2015Nov18 1539 PST, khi tôi tìm kiếm Google 'allowoverride', tôi thấy một hộp phía trên kết quả tìm kiếm hiển thị điều này:now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
boot13


5

Như những người dùng khác đã giải thích ở đây về việc sử dụng chỉ thị allowoveride, được sử dụng để cấp quyền cho việc sử dụng .htaccess. một điều tôi muốn chỉ ra rằng không bao giờ sử dụng allowoverride nếu tất cả người dùng khác có quyền truy cập để viết .htaccess thay vì sử dụng allowoveride như để cho phép một số mô-đun nhất định.

Chẳng hạn như AllowOverride AuthConfig mod_rewritethay vì

AllowOverride All

Bởi vì mô-đun như mod_mime có thể hiển thị các tệp phía máy chủ của bạn dưới dạng văn bản thuần túy.


1
CẢM ƠN BẠN!! Đây chính xác là những gì tôi đang tìm kiếm. Tôi muốn chuyển hướng Windwalker.com.au sang Windwanderer.com.au và vì vậy tôi cần cho phép chỉ thị này trong tệp .htaccess và KHÔNG CÓ THÊM. Luôn đặt AllowOverride TẤT CẢ đáng kể sẽ làm giảm tính bảo mật của máy chủ của tôi.
Jesse the Wind Wanderer

1

Tôi cũng gặp vấn đề này và tôi đã tìm thấy giải pháp như 2 bước dưới đây: 1. Trong thư mục hỗ trợ trang web của apache2, bạn chỉnh sửa trong phần tử Thư mục bằng cách đặt "AllowOverride all" (nên là "tất cả" chứ không phải "không") 2. Trong dự án kohana trong thư mục www, đổi tên "example.htaccess" thành ".htaccess"

Tôi đã làm nó trên Ubuntu. Hy vọng rằng nó sẽ giúp bạn.


0

Máy chủ doanh nghiệp SuSE Linux

Đảm bảo bạn đang chỉnh sửa đúng tệp https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

Tệp cấu hình máy chủ Apache chính. Tránh thay đổi tập tin này. Nó chủ yếu chứa các báo cáo và cài đặt toàn cầu. Ghi đè cài đặt toàn cục trong các tệp cấu hình thích hợp được liệt kê ở đây. Thay đổi cài đặt dành riêng cho máy chủ (như gốc tài liệu) trong cấu hình máy chủ ảo của bạn .

Trong trường hợp vhosts.d/*.confđó phải được chỉnh sửa


0

Ngoài ra, những câu trả lời đúng được nêu lên đôi khi có thể nhìn thấy cùng một lỗi do các cài đặt không khớp và khác nhau trên SSLmột phần của cấu hình máy chủ web . (Rõ ràng khi không sử dụng .htaccesstập tin).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.