access
các tệp cung cấp một cách để thực hiện các thay đổi cấu hình trên cơ sở từng thư mục.
tệp .htaccess
Mô-đun liên quan | Chỉ thị liên quan |
---|---|
Chúng là gì / Cách sử dụng chúng
.htaccess
tệp (hoặc "tệp cấu hình phân tán") cung cấp cách thực hiện thay đổi cấu hình trên cơ sở từng thư mục. Một tệp, chứa một hoặc nhiều chỉ thị cấu hình, được đặt trong một thư mục tài liệu cụ thể, và các chỉ thị áp dụng cho thư mục đó và tất cả các thư mục con của thư mục đó.
Ghi chú:
Nếu bạn muốn gọi .htaccess
tệp của mình là một cái gì đó khác, bạn có thể thay đổi tên của tệp bằng cách sử dụng lệnh AccessFileName
. Ví dụ: nếu bạn muốn gọi tệp .config
thì bạn có thể đặt thông tin sau vào tệp cấu hình máy chủ của mình:
AccessFileName .config
Nói chung, .htaccess
các tệp sử dụng cùng một cú pháp với các tệp cấu hình chính . Những gì bạn có thể đưa vào các tệp này được xác định bởi AllowOverride
chỉ thị. Chỉ thị này chỉ định, trong các danh mục, chỉ thị nào sẽ được chấp nhận nếu chúng được tìm thấy trong một .htaccess
tệp. Nếu một chỉ thị được cho phép trong .htaccess
tệp, tài liệu cho chỉ thị đó sẽ chứa phần Ghi đè, chỉ định giá trị nào phải có AllowOverride
để chỉ thị đó được phép.
Ví dụ: nếu bạn xem tài liệu AddDefaultCharset
hướng dẫn, bạn sẽ thấy rằng nó được cho phép trong .htaccess
các tệp. (Xem dòng Ngữ cảnh trong phần tóm tắt chỉ thị.) Dòng Ghi đè đọc FileInfo
. Do đó, bạn phải có ít nhất AllowOverride FileInfo
để chỉ thị này được lưu trong .htaccess
các tệp.
Nếu bạn không chắc liệu một chỉ thị cụ thể có được phép trong một .htaccess
tệp hay không, hãy xem tài liệu cho chỉ thị đó và kiểm tra dòng Ngữ cảnh cho ".htaccess".
Khi nào (không) sử dụng tệp .htaccess
Nói chung, bạn không bao giờ nên sử dụng .htaccess
tệp trừ khi bạn không có quyền truy cập vào tệp cấu hình máy chủ chính. Ví dụ, có một quan niệm sai lầm phổ biến rằng xác thực người dùng phải luôn được thực hiện trong .htaccess
các tệp. Điều này chỉ đơn giản là không phải vậy. Bạn có thể đặt cấu hình xác thực người dùng trong cấu hình máy chủ chính và trên thực tế, đây là cách ưu tiên để thực hiện.
.htaccess
tệp nên được sử dụng trong trường hợp nhà cung cấp nội dung cần thực hiện thay đổi cấu hình cho máy chủ trên cơ sở từng thư mục, nhưng không có quyền truy cập root trên hệ thống máy chủ. Trong trường hợp quản trị viên máy chủ không sẵn sàng thực hiện các thay đổi cấu hình thường xuyên, có thể mong muốn cho phép người dùng cá nhân thực hiện các thay đổi này trong .htaccess
tệp cho chính họ. Điều này đặc biệt đúng, chẳng hạn, trong trường hợp ISP đang lưu trữ nhiều trang web của người dùng trên một máy duy nhất và muốn người dùng của họ có thể thay đổi cấu hình của họ.
Tuy nhiên, nói chung, .htaccess
nên tránh sử dụng tệp khi có thể. Bất kỳ cấu hình nào bạn muốn đưa vào một .htaccess
tệp, cũng có thể được thực hiện một cách hiệu quả trong một <Directory>
phần trong tệp cấu hình máy chủ chính của bạn.
Có hai lý do chính để tránh sử dụng .htaccess
tệp.
Đầu tiên trong số này là hiệu suất. Khi AllowOverride
được thiết lập để cho phép sử dụng .htaccess
tệp, Apache sẽ tìm kiếm .htaccess
tệp trong mọi thư mục. Do đó, việc cho phép .htaccess
các tệp gây ra hiệu suất hoạt động, cho dù bạn có thực sự sử dụng chúng hay không! Ngoài ra, .htaccess
tệp được tải mỗi khi tài liệu được yêu cầu.
Lưu ý thêm rằng Apache phải tìm kiếm .htaccess
các tệp trong tất cả các thư mục cấp cao hơn, để có bổ sung đầy đủ các chỉ thị mà nó phải áp dụng. (Xem phần về cách các lệnh được áp dụng .) Do đó, nếu một tệp được yêu cầu ngoài thư mục /www/htdocs/example
, Apache phải tìm kiếm các tệp sau:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
Và như vậy, đối với mỗi quyền truy cập tệp ra khỏi thư mục đó, có 4 quyền truy cập hệ thống tệp bổ sung, ngay cả khi không có tệp nào trong số đó. (Lưu ý rằng đây chỉ là trường hợp nếu .htaccess
tệp được bật /
, điều này không thường xảy ra.)
Cân nhắc thứ hai là một trong những an ninh. Bạn đang cho phép người dùng sửa đổi cấu hình máy chủ, điều này có thể dẫn đến những thay đổi mà bạn không kiểm soát được. Hãy cẩn thận xem xét liệu bạn có muốn cấp cho người dùng của mình đặc quyền này hay không. Cũng lưu ý rằng việc cung cấp cho người dùng ít đặc quyền hơn mức họ cần sẽ dẫn đến các yêu cầu hỗ trợ kỹ thuật bổ sung. Đảm bảo rằng bạn cho người dùng biết rõ ràng bạn đã cấp cho họ mức đặc quyền nào. Chỉ định chính xác những gì bạn đã đặt AllowOverride
và trỏ chúng đến tài liệu liên quan, bạn sẽ tránh được rất nhiều nhầm lẫn sau này.
Lưu ý rằng hoàn toàn tương đương với việc đặt một .htaccess
tệp vào thư mục /www/htdocs/example
chứa chỉ thị và đặt cùng chỉ thị đó trong phần Thư mục <Directory /www/htdocs/example>
trong cấu hình máy chủ chính của bạn:
.htaccess
nộp vào /www/htdocs/example
:
Nội dung của tệp .htaccess trong /www/htdocs/example
AddType text/example .exm
Phần từ httpd.conf
tệp của bạn
<Directory /www/htdocs/example>
AddType text/example .exm
</Directory>
Tuy nhiên, việc đặt cấu hình này vào tệp cấu hình máy chủ của bạn sẽ dẫn đến hiệu suất ít hơn, vì cấu hình được tải một lần khi Apache khởi động, thay vì mỗi khi tệp được yêu cầu.
Việc sử dụng .htaccess
tệp có thể bị vô hiệu hóa hoàn toàn bằng cách đặt lệnh AllowOverride
thành none
:
AllowOverride None
Cách các chỉ thị được áp dụng
Các chỉ thị cấu hình được tìm thấy trong một .htaccess
tệp được áp dụng cho thư mục chứa .htaccess
tệp đó và cho tất cả các thư mục con của tệp đó. Tuy nhiên, cũng cần nhớ rằng có thể đã có .htaccess
các tệp trong thư mục cao hơn. Các chỉ thị được áp dụng theo thứ tự mà chúng được tìm thấy. Do đó, một .htaccess
tệp trong một thư mục cụ thể có thể ghi đè các chỉ thị được tìm thấy trong .htaccess
các tệp được tìm thấy cao hơn trong cây thư mục. Và đến lượt nó, có thể có các lệnh ghi đè được tìm thấy ở mức cao hơn hoặc trong chính tệp cấu hình máy chủ chính.
Thí dụ:
Trong thư mục, /www/htdocs/example1
chúng tôi có một .htaccess
tệp chứa những thứ sau:
Options +ExecCGI
(Lưu ý: bạn phải có " AllowOverride Options
" để cho phép sử dụng lệnh " Options
" trong .htaccess
tệp.)
Trong thư mục, /www/htdocs/example1/example2
chúng tôi có một .htaccess
tệp chứa:
Options Includes
Vì .htaccess
tệp thứ hai này , trong thư mục /www/htdocs/example1/example2
, việc thực thi CGI không được phép, như chỉ Options Includes
có hiệu lực, điều này hoàn toàn ghi đè bất kỳ cài đặt nào trước đó có thể đã được áp dụng.
Hợp nhất .htaccess với các tệp cấu hình chính
Như đã thảo luận trong tài liệu về Phần cấu hình , .htaccess
tệp có thể ghi đè các <Directory>
phần cho thư mục tương ứng, nhưng sẽ bị ghi đè bởi các loại phần cấu hình khác từ tệp cấu hình chính. Thực tế này có thể được sử dụng để thực thi các cấu hình nhất định, ngay cả khi có một AllowOverride
bối cảnh tự do . Ví dụ: để ngăn việc thực thi tập lệnh trong khi vẫn cho phép thiết lập bất kỳ thứ gì khác trong đó, .htaccess
bạn có thể sử dụng:
<Directory />
Allowoverride All
</Directory>
<Location />
Options +IncludesNoExec -ExecCGI
</Location>
Ví dụ xác thực
Nếu bạn chuyển trực tiếp đến phần này của tài liệu để tìm hiểu cách xác thực, thì điều quan trọng cần lưu ý là. Có một quan niệm sai lầm phổ biến rằng bạn bắt buộc phải sử dụng .htaccess
tệp để thực hiện xác thực mật khẩu. Đây không phải là trường hợp. Đặt chỉ thị xác thực trong một <Directory>
phần, trong tệp cấu hình máy chủ chính của bạn, là cách ưu tiên để thực hiện điều này và .htaccess
các tệp chỉ nên được sử dụng nếu bạn không có quyền truy cập vào tệp cấu hình máy chủ chính. Xem phần trên để biết thảo luận về thời điểm bạn nên và không nên sử dụng .htaccess
tệp.
Phải nói rằng, nếu bạn vẫn nghĩ rằng bạn cần sử dụng một .htaccess
tệp, bạn có thể thấy rằng một cấu hình như những gì sau đây có thể phù hợp với bạn.
Bạn phải có " AllowOverride AuthConfig
" hiệu lực để các chỉ thị này được tôn trọng.
.htaccess
nội dung tệp:
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/password.file
AuthGroupFile /www/passwords/group.file
Require Group admins
Lưu ý rằng AllowOverride AuthConfig
phải có hiệu lực để các chỉ thị này có hiệu lực.
Vui lòng xem hướng dẫn xác thực để thảo luận đầy đủ hơn về xác thực và ủy quyền.
Phía máy chủ Bao gồm ví dụ
Một cách sử dụng phổ biến khác của .htaccess
các tệp là bật Server Side Bao gồm cho một thư mục cụ thể. Điều này có thể được thực hiện với các chỉ thị cấu hình sau, được đặt trong một .htaccess
tệp trong thư mục mong muốn:
Options +Includes
AddType text/html shtml
AddHandler server-parsed shtml
Lưu ý rằng AllowOverride Options
và AllowOverride FileInfo
cả hai đều phải có hiệu lực để các chỉ thị này có hiệu lực.
Vui lòng xem hướng dẫn SSI để biết thảo luận đầy đủ hơn về bao gồm phía máy chủ.
Ví dụ về CGI
Cuối cùng, bạn có thể muốn sử dụng một .htaccess
tệp để cho phép thực thi các chương trình CGI trong một thư mục cụ thể. Điều này có thể được thực hiện với cấu hình sau:
Options +ExecCGI
AddHandler cgi-script cgi pl
Ngoài ra, nếu bạn muốn tất cả các tệp trong thư mục nhất định được coi là chương trình CGI, thì việc này có thể được thực hiện với cấu hình sau:
Options +ExecCGI
SetHandler cgi-script
Lưu ý rằng AllowOverride Options
và AllowOverride FileInfo
cả hai đều phải có hiệu lực để các chỉ thị này có hiệu lực.
Vui lòng xem hướng dẫn CGI để thảo luận đầy đủ hơn về lập trình và cấu hình CGI.
Xử lý sự cố
Khi bạn đặt các chỉ thị cấu hình vào một .htaccess
tệp và bạn không nhận được hiệu quả mong muốn, có một số điều có thể xảy ra.
Thông thường nhất, vấn đề là AllowOverride
không được đặt sao cho các chỉ thị cấu hình của bạn được thực hiện. Đảm bảo rằng bạn không có AllowOverride None
ảnh hưởng đến phạm vi tệp được đề cập. Một thử nghiệm tốt cho điều này là bỏ rác vào .htaccess
tệp của bạn và tải lại. Nếu lỗi máy chủ không được tạo ra, thì bạn gần như chắc chắn có AllowOverride None
hiệu lực.
Mặt khác, nếu bạn gặp lỗi máy chủ khi cố gắng truy cập tài liệu, hãy kiểm tra nhật ký lỗi Apache của bạn. Nó có thể sẽ cho bạn biết rằng lệnh được sử dụng trong .htaccess
tệp của bạn không được phép. Ngoài ra, nó có thể cho bạn biết rằng bạn đã gặp lỗi cú pháp, sau đó bạn sẽ cần phải sửa.
Subscribe by Email
Follow Updates Articles from This Blog via Email
No Comments