Hướng dẫn cho người mới bắt đầu về .htaccess dành cho Nhà thiết kế và Nhà phát triển
Trong số nhiều công cụ khác nhau để tùy chỉnh máy chủ web của bạn, tệp cấu hình .htaccess là một tài sản to lớn. Bạn có thể nhanh chóng đặt lại các loại tài liệu, công cụ phân tích cú pháp, chuyển hướng URL, và nhiều tính năng quan trọng khác. Quản trị viên web không có nhiều kỹ thuật có thể không nhận được các chi tiết cụ thể về việc quản lý tệp .htaccess của riêng bạn. Nhưng bản thân chủ đề này rất hấp dẫn và đáng để điều tra.
Đối với bài viết này tôi muốn trình bày một số khái niệm có mục đích hơn cho các quản trị web và nhà phát triển web. Bất cứ ai là khởi chạy trang web của riêng họ trên máy chủ Apache chắc chắn sẽ muốn hiểu làm thế nào để quản lý tập tin .htaccess của họ. Nó cung cấp rất nhiều tùy biến và nó có thể hoạt động trên mọi ngôn ngữ web từ PHP đến Ruby.
Ở dưới cùng của bài viết này, tôi đã thêm một số ứng dụng web bên ngoài vào giúp người mới tạo các tệp .htaccess của họ một cách linh hoạt.
Tại sao nên sử dụng tệp .htaccess?
Đây là một câu hỏi hay và có lẽ chúng ta nên bắt đầu bằng cách trả lời “một tập tin .htaccess là gì”? Nó là một tệp cấu hình rất đặc biệt được sử dụng bởi máy chủ web Apache. Một tập tin .htaccess có thể cho máy chủ web biết cách trình bày các dạng thông tin khác nhau và cách xử lý các tiêu đề yêu cầu HTTP khác nhau.
Thực sự nó là một phương tiện của phân cấp để tổ chức cài đặt máy chủ web. Một máy chủ vật lý có thể chứa 50 trang web khác nhau với mỗi tệp .htaccess của riêng họ. Nó trao rất nhiều sức mạnh cho các quản trị web, điều mà nếu không thì không thể. Nhưng tại sao bạn nên sử dụng một?
Lý do lớn nhất là bảo mật. Bạn có thể khóa các thư mục nhất định hoặc làm cho chúng được bảo vệ bằng mật khẩu. Điều này rất tốt cho các dự án tư nhân hoặc Hệ thống quản lý nội dung mới, nơi bạn muốn bảo mật hơn một chút. Nhưng cũng có những tác vụ phổ biến như chuyển hướng thông báo lỗi 404 đến một trang web nhất định. Điều này chỉ mất một dòng mã và nó có thể tác động đáng kể đến cách khách truy cập phản ứng với các trang bị thiếu.
Thật ra không có nhiều điều tôi có thể nói để thuyết phục người khác rằng một tệp .htaccess là đáng để hiểu. Khi bạn thấy nó hoạt động thì bạn có thể nhận ra tất cả giá trị xuất phát từ tệp cấu hình nhỏ này. Ngoài ra, tôi hy vọng phần còn lại của bài viết này có thể trình bày một số chủ đề sâu sắc để đưa các quản trị web vào ánh sáng của việc quản lý cấu hình .htaccess.
Cho phép / từ chối truy cập
Có thể nhận ra khách truy cập spam tiềm năng và từ chối họ truy cập vào trang web của bạn. Điều này có thể hơi cực đoan, tuy nhiên nếu bạn biết rằng một người hoặc một nhóm người đã nhắm mục tiêu trang web của bạn, có một số tùy chọn để lựa chọn. Bạn có thể chọn giới thiệu tên miền để từ chối hoặc cấm khách truy cập bằng địa chỉ IP.
thứ tự cho phép, từ chối từ chối từ 255.0.0.0 từ chối 123,45.6. cho phép từ tất cả
Các mã mẫu này đã được sao chép từ Hướng dẫn Htaccess vì chúng là mẫu hoàn hảo để bắt đầu. Lưu ý địa chỉ IP thứ 2 thiếu số nguyên thứ 4. Khối mã này sẽ nhắm mục tiêu IP đầu tiên (255.0.0.0) và mọi IP trong phạm vi 123,45.6.0-255, sau đó cho phép tất cả lưu lượng khác. Quản trị web có thể không sử dụng điều này thường xuyên như các kỹ thuật khác nhưng rất hữu ích để hiểu.
Ngăn chặn danh sách thư mục
Sẽ có lúc bạn có một thư mục mở thiết lập để cho phép duyệt theo mặc định. Điều này có nghĩa là người dùng có thể xem tất cả các tệp được liệt kê bên trong cấu trúc thư mục nội bộ, như thư mục hình ảnh của bạn. Một số quản trị web không muốn cho phép liệt kê thư mục và rất may đoạn mã này khá dễ nhớ.
Tùy chọn-Index
Tôi đã thấy câu trả lời này được trình bày vô số lần trong suốt Stack Overflow và nó có thể là một trong những quy tắc .htaccess dễ nhớ nhất.
Có thể thực sự tạo nhiều tệp .htaccess bên trong mỗi thư mục này vì vậy có thể một trong số chúng được bảo vệ bằng mật khẩu nhưng những cái khác thì không. Và bạn vẫn có thể giữ Tùy chọn-Index để khách truy cập không thể duyệt qua trang web / hình ảnh / thư mục của bạn.
Bảo vệ mật khẩu
Bảo vệ mật khẩu thư mục của bạn là một thủ tục rất phổ biến đối với bảo vệ các khu vực quản trị và các thư mục quan trọng khác cho trang web của bạn. Đôi khi bạn sẽ chỉ muốn cung cấp quyền truy cập cho một nhóm nhỏ người. Những lần khác, mật khẩu là để ngăn chặn tin tặc truy cập vào bảng quản trị trang web của bạn. Nhưng dù bằng cách nào, nó là một giải pháp rất mạnh mẽ cho toàn bộ vấn đề.
Có một hướng dẫn hữu ích về bảo vệ mật khẩu, trong đó phác thảo các đoạn mã quan trọng. Bạn sẽ cần đến tạo một tập tin mật khẩu lưu trữ thông tin đăng nhập tên người dùng / mật khẩu. Đây là cách Apache có thể kiểm tra xem những gì người dùng nhập vào để xem họ có nên được cấp quyền truy cập hay không. Và chú ý cách bạn sẽ cần tạo một mẫu cho tên người dùng và mật khẩu của bạn.
Tôi khuyên bạn nên sử dụng trình tạo htpassword này để bạn có thể tiết kiệm một chút thời gian. Cú pháp sẽ luôn luôn hoàn hảo và bạn không cần phải tự mã hóa mật khẩu. Và tùy chọn tuyệt vời khác là mật khẩu bảo vệ toàn bộ danh sách thư mục. Chúng ta có thể thấy ví dụ này trong bộ sưu tập đoạn mã CSS-Tricks.
AuthType Basic AuthName "Khu vực này được bảo vệ bằng mật khẩu" AuthUserFile /full/path/to/.htpasswd Yêu cầu người dùng hợp lệ
Bảo mật cho WordPress
Để sử dụng tốt ý tưởng bảo vệ mật khẩu này, hãy hiển thị một ví dụ trong thế giới thực. Đoạn mã phức tạp hơn này sẽ buộc xác thực người dùng cho bất kỳ ai truy cập tệp wp-login.php của WordPress. Bạn sẽ tìm thấy nguồn ban đầu trên Ask Apache, có rất nhiều đoạn bảo vệ WordPress khác.
Từ chối đơn hàng, cho phép từ chối mọi thỏa mãn bất kỳ AuthName "Được bảo vệ bởi AskApache" AuthUserFile /web/askapache.com/.htmlpasswda1 AuthType Basic Yêu cầu người dùng hợp lệ
Và nếu bạn sẽ tuân theo các quy tắc .htaccess này, nó cũng có thể giúp mật khẩu bảo vệ khu vực quản trị. Điển hình là wp-login.php tập tin sẽ nhận được nhiều lượt truy cập nhất từ những người cố gắng vũ trang theo cách của họ vào hệ thống của bạn. Vì vậy, ngay cả các mã mẫu ở trên sẽ là quá đủ bảo mật cho trang web WordPress của bạn.
Quy tắc viết lại URL HTTP
Viết lại URL có lẽ là một trong những cách sử dụng phổ biến nhất cho các tệp .htaccess. Cài đặt mặc định của WordPress thực sự có thể tạo tệp .htaccess ngay từ bảng quản trị. Điều này cho phép bạn tạo các URL đẹp không có cấu trúc .php? P = 1.
Tôi muốn xem ví dụ viết lại này trên Làm thế nào để cập nhật dấu gạch dưới vào dấu gạch ngang kể từ đó chứa rất nhiều yếu tố quan trọng nhất.
Tùy chọn + FollowSymLinks RewriteEngine On RewriteBase / RewriteRule! \. (Html | php) $ - [S = 4] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _] *) _ ( [^ _] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4- $ 5 [E = uscor: Có] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ ([^ _ ] *) _ (. *) $ $ 1- $ 2- $ 3- $ 4 [E = uscor: Có] RewriteRule ^ ([^ _] *) _ ([^ _] *) _ (. *) $ $ 1- $ 2- $ 3 [E = uscor: Có] RewriteRule ^ ([^ _] *) _ (. *) $ $ 1- $ 2 [E = uscor: Có] RewriteCond% ENV: uscor ^ Có $ RewriteRule (. *) Http: //d.com/$1 [R = 301, L]
Viết lại và RewriteBase hầu hết luôn có thể được đặt thành các giá trị chính xác này. Nhưng bạn cần bật RewriteEngine cho mọi thứ khác hoạt động. Có rất nhiều hướng dẫn trực tuyến giải thích cách bật mod_rewrite và nhà cung cấp dịch vụ lưu trữ của bạn cũng có thể giúp đỡ.
Lưu ý cú pháp theo một mẫu của RewriteRules ở trên cùng Những quy tắc này được sử dụng để phù hợp với các trường hợp đang được gửi dưới dạng yêu cầu HTTP. Chúng được trả lời bởi RewriteRule, trong trường hợp này chuyển hướng mọi thứ đến miền d.com. Các dấu ngoặc kết thúc như [R = 301, L] được gọi là cờ viết lại rất quan trọng, nhưng chủ đề nâng cao hơn.
Cú pháp mod_rewrite chắc chắn hơi khó hiểu nhưng không bị đe dọa! Các đoạn có thể trông dễ dàng hơn rất nhiều trong các ví dụ khác.
Khi mới bắt đầu, tôi phải giới thiệu ứng dụng web mod_rewrite này giúp bạn tạo các mẫu mã bằng các URL thực. Đây là một công cụ tuyệt vời vì bạn có thể tra cứu các mục khác nhau trong cú pháp để xem những gì chúng thực sự làm trong quy tắc Viết lại. Đây là một hướng dẫn tuyệt vời với một ví dụ đơn giản hơn để nghiên cứu:
RewriteRule ^ dir / ([0-9] +) /? $ /Index.php?id=$1 [L]
Đừng cố gắng quá tải tất cả những điều này cùng một lúc. Tôi đã mất hơn 3-4 tháng để thực sự bắt đầu hiểu cách viết lại URL với [0-9a-zA-Z] + và các mẫu tương tự. Hãy tiếp tục luyện tập và đúng lúc tôi hứa bạn sẽ có được những thứ như kiến thức thông thường.
Đoạn mã cho quản trị trang web
Tôi yêu các đoạn mã dễ sử dụng và tôi muốn kết hợp bộ sưu tập mã .htaccess thích hợp này cho các quản trị web. Mỗi ý tưởng này có thể phù hợp độc đáo với tệp .htaccess của riêng bạn cùng với các khối mã khác. Hầu hết các đoạn này là tuyệt vời cho giải quyết vấn đề nhanh hoặc sửa lỗi trong môi trường máy chủ web của bạn. Hãy tưởng tượng thiết lập Apache hoàn hảo cho các quản trị web hoàn toàn mới chỉ bắt đầu trực tuyến.
Cài đặt Directory Index
Lệnh cho Directory Index được sử dụng phổ biến trong một dòng. Bạn có thể cho Apache biết những tài liệu nào ban đầu nên được coi là “chủ yếu” tài liệu. Theo mặc định, điều này sẽ các mục tiêu như index.html, index.php, index.asp và các tệp chỉ mục khác. Nhưng sử dụng đoạn mã này mà tôi đã sao chép bên dưới, bạn có khả năng tạo tài liệu gốc này bất cứ điều gì bạn thích.
Directory Index index.html index.cgi index.php
Thứ tự của các tài liệu nên bắt đầu với việc quan trọng nhất và chuyển qua các cấp bậc để ít quan trọng nhất. Vì vậy, nếu chúng ta không có tệp HTML hoặc CGI thì dự phòng sẽ chuyển sang index.php. Và bạn thậm chí có thể đặt tên cho các tập tin này nhà.php hoặc là sometherfile.php và đó là tất cả cú pháp hợp lệ.
Buộc miền con WWW hoặc không WWW
Google có thể hoạt động với cả hai phiên bản tên miền trang web của bạn nếu bạn không chỉ định www.domain.com hoặc chỉ tên miền.com. Theo kinh nghiệm của tôi, đó là cách tốt nhất để chọn một trong số này và đặt nó làm lựa chọn duy nhất thông qua .htaccess. Sau đó, Google sẽ không lập chỉ mục các URL khác nhau với một số trỏ đến tên miền phụ WWW trong khi những người khác thì không.
# Buộc WWW Subdomain RewriteEngine On RewriteCond% HTTP_HOST ^ domain.com [NC] RewriteRule ^ (. *) $ Http://www.domain.com/$1 [L, R = 301] # No Subdomain RewriteEngine On RewriteCond% HTTP_HOST! ^ Domain.com $ [NC] RewriteRule ^ (. *) $ Http://domain.com/$1 [L, R = 301]
Đoạn mã này đến từ kho lưu trữ CSS-Tricks và cung cấp một giải pháp rất tiện dụng. Bạn nên cập nhật tên miền thành bất cứ điều gì bạn cần cho trang web của riêng bạn. Nếu không sẽ có vấn đề và bạn sẽ nhận thấy ngay lập tức! Nhưng tôi rất ủng hộ việc buộc một trong hai tùy chọn này và nó nằm ở đầu danh sách nhiệm vụ của tôi sau khi ra mắt một trang web mới.
Buộc tải tập tin phương tiện
Một đoạn mã khá quan trọng khác cho phép buộc một số loại phương tiện nhất định phải tải xuống thay vì được hiển thị trong trình duyệt. Ngay lập tức tôi có thể nghĩ về các tài liệu PDF và các tệp âm thanh MP3 có thể được trình bày ở định dạng có thể tải xuống, nhưng bạn thì sao đảm bảo chúng có thể tải xuống? Tôi đã tìm thấy một bài viết tương tự được xuất bản trên Htaccess Guide trong đó phác thảo đoạn mã này.
Ứng dụng AddType / octet-stream .zip .mp3 .mp4
Vui lòng bao gồm nhiều loại tệp hơn ở cuối dòng này. Tất cả các định dạng phương tiện sử dụng loại MIME luồng octet sẽ có thể tải xuống. Buộc điều này thông qua .htaccess là một tuyến rất trực tiếp để đảm bảo mọi người không thể xem các tệp này trong trình duyệt.
Tài liệu lỗi tùy chỉnh
Một phần cuối cùng tôi muốn thêm là một mẫu đầy đủ các tài liệu lỗi tùy chỉnh. Thông thường các mã số này chỉ được nhìn thấy ở cuối máy chủ. Nhưng có rất nhiều tài liệu lỗi mà bạn nên làm quen. Một vài ví dụ có thể là Lỗi 403/404 và Chuyển hướng 301.
Mẫu mã lỗi này bắt đầu từ 100 và di chuyển lên thành 500 lỗi. Xin lưu ý rằng rõ ràng bạn không cần tất cả những thứ này. Chỉ những lỗi phổ biến nhất là cần thiết và có thể là một vài đoạn tối nghĩa nếu bạn cảm thấy cần thiết.
Nếu bạn không nhận ra một mã, hãy tìm nó trên Wikipedia để hiểu rõ hơn.
ErrorDocument 100 / 100_CONTINUE ErrorDocument 101 / 101_SWITCHING_PROTOCOLS ErrorDocument 102 / 102_PROCESSING ErrorDocument 200 / 200_OK ErrorDocument 201 / 201_CREATED ErrorDocument 202 / 202_ACCEPTED ErrorDocument 203 / 203_NON_AUTHORITATIVE ErrorDocument 204 / 204_NO_CONTENT ErrorDocument 205 / 205_RESET_CONTENT ErrorDocument 206 / 206_PARTIAL_CONTENT ErrorDocument 207 / 207_MULTI_STATUS ErrorDocument 300 / 300_MULTIPLE_CHOICES ErrorDocument 301 / 301_MOVED_PERMANENTLY ErrorDocument 302 / 302_MOVED_TEMPORARILY ErrorDocument 303 / 303_SEE_OTHER ErrorDocument 304 / 304_NOT_MODIFIED ErrorDocument 305 / 305_USE_PROXY ErrorDocument 307 / 307_TEMPORARY_REDIRECT ErrorDocument 400 / 400_BAD_REQUEST ErrorDocument 401 / 401_UNAUTHORIZED ErrorDocument 402 / 402_PAYMENT_REQUIRED ErrorDocument 403 / 403_FORBIDDEN ErrorDocument 404 / 404_NOT_FOUND ErrorDocument 405 / 405_METHOD_NOT_ALLOWED ErrorDocument 406 / 406_NOT_ACCEPTABLE ErrorDocument 407 / 407_PROXY_AUTHENTICATION_REQUIRED ErrorDocument 408 / 408_REQUEST_TIME_OUT ErrorDocument 409 / 409_CONFLICT ErrorDocument 410 / 410_GONE ErrorDocument 411 / 411_LENGTH_REQUIRED ErrorDocument 412 / 412_PRECONDITION_FAILED ErrorDocument 413 / 413_REQUEST_ENTITY_TOO_LARGE ErrorDocument 414 / 414_REQUEST_URI_TOO_LARGE ErrorDocument 415 / 415_UNSUPPORTED_MEDIA_TYPE ErrorDocument 416 / 416_RANGE_NOT_SATISFIABLE ErrorDocument 417 / 417_EXPECTATION_FAILED ErrorDocument 422 / 422_UNPROCESSABLE_ENTITY ErrorDocument 423 / 423_LOCKED ErrorDocument 424 / 424_FAILED_DEPENDENCY ErrorDocument 426 / 426_UPGRADE_REQUIRED ErrorDocument 500 / 500_INTERNAL_SERVER_ERROR ErrorDocument 501 / 501_NOT_IMPLEMENTED ErrorDocument 502 / 502_BAD_GATEWAY ErrorDocument 503 / 503_SERVICE_UNAVAILABLE ErrorDocument 504 / 504_GATEWAY_TIME_OUT ErrorDocument 505 / 505_VERSION_NOT_SUPPORTED ErrorDocument 506 / 506_VARIANT_ALSO_VARIES ErrorDocument 507 / 507_INSUFFICIENT_STORAGE ErrorDocument 510 / 510_NOT_EXTENDED
Ứng dụng web trực tuyến .htaccess
- Trình tạo Htaccess
- .máy tạo chuyển hướng htaccess
- .htaccessEditor - Tạo tệp .htaccess
- Mod Rewrite Generator bởi GenerateIt.net
Tài nguyên hữu ích khác
- .htaccess trong httpd Wiki
- Tài liệu chính thức của Apache htaccess
- Hỏi Blog Apache - Lưu trữ Htaccess
- Hướng dẫn cơ bản về htaccess và mod_rewrite
- Mọi điều bạn từng muốn biết về Quy tắc Mod_Rewrite nhưng lại ngại hỏi
Suy nghĩ cuối cùng
Có rất nhiều tài nguyên trực tuyến thảo luận về các tệp .htaccess. Các bài viết và ứng dụng web được liên kết của tôi là một nơi tuyệt vời để bắt đầu. Nhưng hãy tiếp tục thực hành những ý tưởng mới và đừng sợ kiểm tra đoạn mã. Miễn là bạn có một tập tin sao lưu sau đó bạn có thể kiểm tra bất cứ điều gì bạn thích và đó là một trải nghiệm học tập thú vị.
Nếu bạn có ý tưởng hoặc đề xuất khác về quản lý .htaccess, vui lòng chia sẻ với chúng tôi trong khu vực thảo luận dưới đây.