Mục lục nội dung
File .htaccess là gì? Cách sử dụng .htaccess
.htaccess là gì
.htaccess là một tệp được lưu trữ trong một thư mục web, thường là trên hệ điều hành biến thể Unix và Linux, cấp hoặc từ chối người dùng hoặc nhóm quyền truy cập vào thư mục đó. Trên hệ điều hành giống Unix chẳng hạn như Linux , .htaccess phải có quyền được đặt thành 640 bằng cách sử dụng chmod . Nó cũng phải được đặt trong thư mục public_html gốc.

Ví dụ và giải thích đầy đủ về .htaccess
Dưới đây là bản phân tích đầy đủ của từng phân đoạn chính của tệp .htaccess. Mỗi phân đoạn này có thể được kết hợp vào tệp .htaccess của bạn tùy thuộc vào những gì tài khoản của bạn cần.
Đảm bảo kiểm tra trang web của bạn sau khi thực hiện bất kỳ thay đổi nào bên dưới. Những thay đổi này có thể hạn chế hoặc chuyển hướng khách truy cập của bạn theo cách mà bạn có thể không lường trước được.
Các dòng bắt đầu bằng # là nhận xét hoặc câu lệnh không thể thay đổi được. Ngoài ra, nhiều ví dụ bên dưới đang sử dụng biểu thức chính quy để giúp khớp các ký tự hoặc tệp trong chuỗi URL.
Đặt Charset mặc định
#Set the charset for the pages AddDefaultCharset UTF-8
Trong ví dụ trên, thiết lập ký tự của mỗi trang được đặt thành UTF-8. Mặc dù điều này có thể được chỉ định trong thẻ meta , nhưng nếu bạn muốn áp dụng cài đặt này cho mọi tài liệu, hãy đặt nó ở dạng .htaccess.
Kết hợp chuyển hướng được tìm thấy trong URL
#Redirect M$soft and Hacking attempts RedirectMatch (.*MSOffice)$ /error.htm RedirectMatch (.*httpodbc\.dll)$ /error.htm RedirectMatch (.*root\.exe)$ /error.htm RedirectMatch (.*nt)$ /error.htm RedirectMatch (.*comments.php)$ /error.htm
Trong ví dụ trên, RedirectMatch chuyển hướng bất kỳ chuỗi nào đã khớp ở trên đến trang error.htm. Trong dòng đầu tiên, chúng tôi đối sánh bất kỳ MSOffice nào ở cuối URL và chuyển tiếp đến trang error.htm.
Chuyển hướng người dùng với lỗi 410
#HTTP 410 don't log files don't have Redirect gone /crossdomain.xml Redirect gone /labels.rdf
Ví dụ tiếp theo chuyển hướng người dùng đến thông báo lỗi 410, có nghĩa là trang họ đang tìm đã biến mất, không bao giờ quay lại và không có địa chỉ chuyển tiếp. Chuyển hướng 410 là một cách tuyệt vời để chuyển hướng yêu cầu đến các trang không có trên máy chủ của bạn nhưng thường xuyên được yêu cầu và gây ra lỗi 404 trong nhật ký lỗi của bạn.
Redirect tên miền cũ qua tên miền mới
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR] RewriteCond %{HTTP_HOST} ^www.olddomain.com$ RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L] </IfModule>
Chuyển hướng 301 tối ưu cho SEO
// 1 Trang Redirect 301 /old/old.htm http://domain.com/new.htm // Chuyển domain RewriteEngine On RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
Các trang tài liệu lỗi tùy chỉnh
#Error pages ErrorDocument 400 /error.php?400 ErrorDocument 401 /error.php?401 ErrorDocument 403 /error.php?403 ErrorDocument 404 /error.php?404 ErrorDocument 405 /error.php?405 ErrorDocument 410 /error.php?410 ErrorDocument 500 /error.php?500 ErrorDocument 501 /error.php?501
Trong ví dụ trên, bất kỳ lỗi HTTP nào đều được chuyển hướng đến một tập lệnh PHP hiển thị lỗi cho người dùng. Tập lệnh PHP cũng ghi lại lỗi cho quản trị viên web. Xem định nghĩa HTTP của chúng tôi để biết danh sách đầy đủ các mã trạng thái HTTP, nếu bạn cần nhiều hơn những gì được liệt kê ở trên. Trang web của bạn có thể không cần gì nhiều hơn một phản hồi lỗi 404 tùy chỉnh.
Tạo chuyển hướng 301
#HTTP 301 redirect wikimaytinh.com to www.wikimaytinh.com RewriteEngine On rewritecond %{http_host} ^wikimaytinh.com [NC] rewriterule ^(.*)$ https://www.wikimaytinh.com/$1 [L,R=301,NC]
Trong ví dụ trên, chúng tôi đã tạo 301 chuyển hướng https://wikimaytinh.com đến https://www.wikimaytinh.com. Chuyển hướng sử dụng “L, R = 301, NC” làm cờ. Chữ “L” là viết tắt của “last”. Nó yêu cầu Apache không chạy quy tắc viết lại nào nữa. “R = 301” dành cho chuyển hướng 301 và “NC” là viết tắt của “no case” và làm cho quy tắc này không phân biệt chữ hoa chữ thường. Tạo loại chuyển hướng này giúp ngăn các trang web của bạn được liệt kê nhiều lần trong các công cụ tìm kiếm và giữ cho mọi thứ nhất quán. Chúng tôi cũng đã thêm tùy chọn để theo dõi các liên kết tượng trưng, giúp ngăn lỗi xảy ra nếu một tệp hoặc thư mục được liên kết đến và không phải là tệp hoặc thư mục thực tế.
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*) http://%1/$1 [R=301,L]
Ví dụ trên là một ví dụ khác về cách tạo trực tiếp 301. Trong ví dụ này, chúng tôi đang chuyển hướng bất kỳ địa chỉ www nào đến một địa chỉ không phải www. Vì vậy, nếu được triển khai https://www.wikimaytinh.com sẽ trở thành https://wikimaytinh.com. Trong ví dụ này, chúng tôi cũng đã thêm ký tự .* làm miền thay vì chỉ định wikimaytinh.com.
Bảo mật tệp .htaccess
# Secure htaccess file <Files .htaccess> order allow,deny deny from all </Files>
Trong ví dụ tiếp theo này, một quy tắc được tạo để ngăn không cho bất kỳ ai xem tệp .htaccess của bạn và các quy tắc bạn đã liệt kê ở đó. Những dòng bổ sung này có thể bổ sung bảo vệ bổ sung cho tệp .htaccess.
Tắt lập chỉ mục thư mục
# disable directory browsing Options All -Indexes
Trong ví dụ trên, quy tắc bảo mật này sẽ ngăn không cho bất kỳ ai duyệt các thư mục trên máy chủ của bạn. Ví dụ: nếu bạn có một thư mục được gọi là / files không chứa tệp index.html, các tệp của thư mục đó sẽ được hiển thị cho bất kỳ ai. Nếu thư mục đó có các tệp nhạy cảm (ví dụ: mật khẩu), người duyệt thư mục đó có thể xem hoặc lưu bất kỳ tệp nào trong thư mục đó, đây là một rủi ro bảo mật.
Làm cho các tệp HTML hoạt động như các tệp SSI
#Allow files with chmod +x to be SSI files xBitHack on
Bằng cách bật xBitHack, bạn có thể cho phép bất kỳ tệp HTML nào có quyền thực thi, ví dụ: chmod + x được coi là tệp SSI. Phần bổ sung này hữu ích cho bất kỳ ai đang chạy trang web dưới dạng tệp HTML tĩnh và cần một hoặc nhiều trang web HTML của họ có SSI.
Bật bộ nhớ đệm trang web
# Month cache <FilesMatch "\.(gif|jpg|jpeg|pdf|png|ico)$"> Header set Cache-Control "max-age=2592000" </FilesMatch> # Week cache <FilesMatch "\.(js|css|ch|txt)$"> Header set Cache-Control "max-age=604800" </FilesMatch> # Day cache <FilesMatch "\.(html|htm)$"> Header set Cache-Control "max-age=86400" </FilesMatch>
Bộ nhớ đệm được thiết lập để giúp cải thiện tốc độ tải trang và giảm nhu cầu trên máy chủ của bạn. Trong ví dụ đầu tiên ở trên, tệp hình ảnh và các tệp khác được đặt ở độ tuổi tối đa là một tháng. Nếu khách truy cập yêu cầu tệp mà họ đã xem một lần, tất cả các yêu cầu trong tương lai sẽ được tải từ máy tính của họ chứ không phải máy chủ trong một tháng. Tiếp theo, các tệp như tệp JavaScript và tệp CSS được đặt thành giới hạn độ tuổi tối đa theo tuần. Cuối cùng, các tệp HTML được đặt thành giới hạn ngày. Tất cả đều có thể được điều chỉnh tùy thuộc vào tần suất bạn cập nhật các loại tệp này.
Từ chối khách truy cập dựa trên USER_AGENT
RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^BlackWidow [OR] RewriteCond %{HTTP_USER_AGENT} ^Download\ Demon [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR] RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR] RewriteCond %{HTTP_USER_AGENT} ^GetRight [OR] RewriteCond %{HTTP_USER_AGENT} ^Go!Zilla [OR] RewriteCond %{HTTP_USER_AGENT} ^GrabNet [OR] RewriteCond %{HTTP_USER_AGENT} HTTrack [OR] RewriteCond %{HTTP_USER_AGENT} ^Zeus RewriteRule ^.* - [F,L]
Có một số công cụ và dịch vụ lập chỉ mục trang web của bạn để tìm kiếm địa chỉ e-mail hoặc sao chép trang hoàn chỉnh của bạn. Nếu được sử dụng không đúng cách, các dịch vụ này sẽ làm hỏng máy chủ của bạn và cũng có thể được sử dụng với mục đích xấu. Nếu bạn nhận thấy các tác nhân người dùng này trong nhật ký khách truy cập của mình, có thể bị ngăn chặn bằng cách sử dụng lệnh tương tự như trên.
Từ chối khách truy cập dựa trên địa chỉ IP
Order Allow,Deny Deny from 172.67.131.180 Allow from all
Trong ví dụ trên, những dòng này từ chối một địa chỉ IP truy cập các trang của bạn. Cấm một IP bằng cách sử dụng phương pháp này giúp chặn bất kỳ ai từ IP đó làm bất cứ điều gì với trang web của bạn.
Chặn hotlink
Options +FollowSymlinks #No hotlink RewriteEngine On RewriteCond %{HTTP_REFERER}!^$ RewriteCond %{HTTP_REFERER}!^http://(www.)?domain.com/[nc] RewriteRule .*.(gif|jpg|png)$ http://domain.com/images/nohotlink.gif[nc]
Xóa phần mở rộng .php trong url web
RewriteRule ^(([^/]+/)*[^.]+)$ /$1.php [L]
Chuyển .php sang .html trong url
RewriteRule ^(.*).html$ $1.php [R=301,L]
Thêm dấu “/” vào cuối URL
RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !# RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ http://domain.com/$1/ [L,R=301]
Chuyển dấu gạch dưới _ thành gạch giữa – trong URL
Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule !.(html|php)$ - [S=4] RewriteRule ^([^_]*)_([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4-$5 [E=uscor:Yes] RewriteRule ^([^_]*)_([^_]*)_([^_]*)_(.*)$ $1-$2-$3-$4 [E=uscor:Yes] RewriteRule ^([^_]*)_([^_]*)_(.*)$ $1-$2-$3 [E=uscor:Yes] RewriteRule ^([^_]*)_(.*)$ $1-$2 [E=uscor:Yes] RewriteCond %{ENV:uscor} ^Yes$ RewriteRule (.*) http://domain.com/$1 [R=301,L]
Thiết lập lại trang mặc định
DirectoryIndex info.html
Bật tính năng nén file Gzip
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for really old browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>
Nếu web server không hỗ trợ mod_deflate
, hãy thay thế nó bằng mod_gzip
với code dưới đây:
<ifModule mod_gzip.c> mod_gzip_on Yes mod_gzip_dechunk Yes mod_gzip_item_include file \.(html?|txt|css|js|php|pl)$ mod_gzip_item_include mime ^application/x-javascript.* mod_gzip_item_include mime ^text/.* mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.* mod_gzip_item_exclude mime ^image/.* mod_gzip_item_include handler ^cgi-script$ </ifModule>
Không cho truy cập file chỉ định
#Bảo mật file admin-log.php <files admin-log.php> order allow,deny deny from all </files>
Giới hạn dung lượng file upload
#Giới hạn đến 10mb LimitRequestBody 10240000
Chuyển hướng HTTP sang HTTPS
Chú ý: không được có 2 dòng “RewriteEngine On” trong file htaccess
RewriteEngine On RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Các ví dụ và thông tin ở trên có thể không áp dụng cho tất cả các hệ thống hoặc thiết lập. Do đó, nếu bạn không chắc ISP hoặc máy chủ web của mình có hỗ trợ việc tạo quyền bằng htaccess hay không, hãy liên hệ với họ nếu bạn không thể dùng mật khẩu bảo vệ trang web.
Tải file .htaccess chuẩn cho web PHP
Options All -Indexes DirectoryIndex index.php index.htm index.html RewriteEngine on RewriteBase / # Force HTTPS on the subdomains/subdirectories login or admin #RewriteCond %{HTTPS} off #RewriteCond %{HTTP_HOST} ^(login|admin)\. [NC] #RewriteCond %{REQUEST_URI} ^(login|admin)\. [NC,OR] #RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # Force WWW if no subdomain is given RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$ RewriteCond %{HTTP_HOST} !^$ RewriteCond %{HTTPS}s ^on(s)| RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Tải file .htaccess chuẩn cho web WordPress
# BEGIN WordPress RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress
Nguồn: File .htaccess là gì? Cách sử dụng .htaccess
Từ khóa liên quan: file .htaccess nằm ở đâu, Download file htaccess, tạo file htaccess mặc định, tải file htaccess
Có thể bạn quan tâm:
Product key là gì? CD key là gì?
Cách tìm tên máy tính của bạn
Cách kiểm tra mức tiêu thụ điện năng của máy tính
Cách tắt Quick Access trên Windows 10
Các ví dụ cơ bản về HTML
Cách in bằng điện thoại thông minh hoặc máy tính bảng