Tổng hợp thủ thuật với file .htaccess trong WordPress.
Tập tin .htaccess là một tập tin cấu hình, cho phép bạn kiểm soát các tập tin và thư mục trong host và tất cả các thư mục con của chúng. Tên của nó được viết tắt từ chữ hypertext access và được hỗ trợ bởi hầu hết các loại máy chủ web (nổi bật là Apache và LiteSpeed). Đối với nhiều người dùng WordPress, lần đầu tiên làm quen với tập tin htaccess là khi họ tùy chỉnh các thiết lập permalink của blog/ website. Để có được permalink đẹp, chẳng hạn như https://wpcanban.com/sample-post.html thay vì https://wpcanban.com/?p=123, chúng ta cần thêm một đoạn mã như thế này vào tập tin htaccess:
# 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
Nếu tập tin htaccess không tồn tại, bạn có thể tự tạo và tải nó lên. Tất cả những gì bạn phải làm là tạo ra một tập tin văn bản trống, lưu nó với đuôi .htaccess và tải nó vào thư mục gốc, nơi cài đặt WordPress. Bạn cũng cần phải đảm bảo tập tin htaccess là writeable (cho phép ghi) để WordPress có thể thêm code phù hợp vào trong. WordPress.org khuyên người dùng nên để permissions (CHMOD) là 644 cho tập tin htaccess.
Tham khảo thêm:
Tập tin htaccess trong WordPress không chỉ được sử dụng cho permalink. Nó còn được biết đến với khả năng tăng cường sự bảo mật cũng như cải thiện tốc độ load cho blog/ website. Hàng triệu người dùng WordPress sử dụng tập tin htaccess để bảo vệ blog/ website của họ khỏi spammer, hacker và các mối đe dọa an ninh khác.
Trong bài viết này, tôi sẽ chia sẻ với các bạn một số đoạn code hữu ích dành cho tập tin htaccess, giúp blog/ website của bạn load nhanh hơn và an toàn hơn. Ngoài ra còn có một số chức năng bổ sung khác mà tôi tin rằng bạn sẽ thấy chúng thực sự thú vị.
Tổng hợp thủ thuật với file htaccess
Lưu ý: htaccess là một tập tin rất quan trọng, bạn cần phải tạo một bản backup trước khi tiến hành chỉnh sửa nó để tránh các sai sót đáng tiếc có thể xảy ra.
1. Bảo vệ tập tin htaccess
Tập tin htaccess kiểm soát hầu như toàn bộ blog/ website của bạn nên việc bảo vệ nó khỏi sự xâm nhập trái phép là một việc rất quan trọng. Đoạn code sau đây sẽ giúp ngăn chặn hacker truy cập vào tập tin htaccess.
<files ~ "^.*\.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
2. Bảo vệ tập tin wp-config.php
Một tập tin quan trọng không kém của WordPress là wp-config.php. Tập tin cấu hình này chứa các thông tin đăng nhập cơ sở dữ liệu WordPress của bạn cũng như các thiết lập bảo trì quan trọng khác. Do đó, bạn nên vô hiệu hóa việc người lạ truy cập vào nó.
<files wp-config.php>
order allow,deny
deny from all
</files>
3. Bảo vệ thư mục wp-content
Thư mục wp-content là một trong những khu vực quan trọng nhất của WordPress. Đây là nơi chứa các tập tin của themes, plugins, các tập tin đã được upload (hình ảnh và video)… và các tập tin cache. Do đó, nó là một trong những mục tiêu chính của tin tặc.
Bạn có thể giải quyết các mối đe dọa bảo mật bằng cách tạo ra một tập tin htaccess riêng cho thư mục /wp-content/ và thêm đoạn code sau đây vào trong:
Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>
Sau đó bạn cần phải upload tập tin htaccess này vào thư mục /wp-content/. Nó thường nằm ở đường dẫn: /public_html/wp-content/. Việc làm này sẽ cho phép các tập tin media được tải lên bao gồm XML, CSS, JPG, JPEG, PNG, GIF và JavaScript. Tất cả các loại tập tin khác sẽ bị từ chối.
4. Chặn include-only files
Có một số tập tin mà người dùng không bao giờ được phép đụng tới (thường nằm trong các thư mục có tên chứa từ “includes”). Bạn có thể chặn việc truy cập vào những tập tin này bằng cách thêm đoạn code sau vào tập tin htaccess:
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
5. Hạn chế truy cập khu vực Admin
Một khu vực thường xuyên bị tấn công bởi các tin tặc là WordPress Admin (trang quản trị). Nếu truy cập được vào khu vực này, chúng có thể làm hầu hết mọi thứ trên blog/ website của bạn.
Để làm cho khu vực này an toàn hơn, bạn cần tạo ra một tập tin htaccess cho riêng nó và thêm đoạn mã dưới đây vào:
# Limit logins and admin by IP
<Limit GET POST PUT>
order deny,allow
deny from all
allow from 12.34.56.78
</Limit>
Hãy thay đổi 12.34.56.78 thành địa chỉ IP của bạn (bạn có thể tìm ra địa chỉ IP của mình tại What Is My IP?). Sau đó upload tập tin htaccess vào thư mục /wp-admin/. Nó thường nằm ở đường dẫn: /public_html/wp-admin/. Nếu muốn thêm các địa chỉ IP khác, bạn chỉ cần thêm tiếp vào mục allow from. Các địa chỉ IP được ngăn cách nhau bởi 1 dấu phẩy và dấu cách.
6. Cấm một ai đó truy cập website
Nếu bạn biết địa chỉ IP của một người nào đó là nguy hiểm, bạn hoàn toàn có thể cấm họ truy cập blog/ website của bạn bằng cách sử dụng đoạn code dưới đây:
<Limit GET POST>
order allow,deny
deny from 123.456.78.9
deny from 987.654.32.1
allow from all
</Limit>
Thay địa chỉ IP bằng IP mà bạn muốn cấm (ban) cho phù hợp.
7. Chuyển hướng khách truy cập đến trang bảo trì
Nếu bạn muốn chuẩn bị cho những điều tồi tệ nhất có thể xảy ra, tôi khuyên bạn nên tạo một trang HTML cơ bản có tên là maintenance.html, nhằm thông báo cho khách truy cập rằng blog/ website của bạn đang gặp một chút vấn đề nhưng sẽ hoạt động trở lại trong một thời gian ngắn. Khi blog/ website của bạn gặp vấn đề do bị hack hoặc do lỗi màn hình trắng, chỉ cần thêm đoạn mã dưới đây vào tập tin htaccess để chuyển hướng tất cả khách truy cập đến thông điệp của bạn tại maintenance.html.
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.html$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123
RewriteRule $ /maintenance.html [R=302,L]
8. Vô hiệu hoá việc truy cập directory
Cho phép người lạ truy cập các tập tin và thư mục của bạn có thể là một nguy cơ lớn về bảo mật. Để vô hiệu hóa việc truy cập các thư mục, chỉ cần thêm đoạn code sau đây vào tập tin htaccess của bạn:
# disable directory browsing
Options All -Indexes
9. Kích hoạt cache cho trình duyệt
Kích hoạt cache (bộ nhớ đệm) cho trình duyệt web là một trong những thủ thuật nhằm tăng tốc độ load và giảm tải cho blog/ website. Khi được kích hoạt, trình duyệt web sẽ cache các dữ liệu đã tải trước đó (CSS, JS, hình ảnh…), giúp khách truy cập tiết kiệm thời gian vì họ không cần phải tải lại các tài nguyên. Việc này cũng giúp bạn tiết kiệm tài nguyên cho host.
Để cho phép kích hoạt bộ nhớ đệm, tất cả những gì bạn cần làm là thêm đoạn code sau đây vào tập tin htaccess trong thư mục gốc của WordPress:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES CACHING ##
10. Chuyển hướng URL
Chuyển hướng 301 giúp bạn thông báo cho công cụ tìm kiếm rằng một URL đã chuyển hướng đến vị trí mới. Chúng có thể được sử dụng để chuyển hướng một trang, một bài viết hoặc thậm chí là cả một website. Do đó chúng đặc biệt hữu ích khi bạn thay đổi URL của site (có thể là thay đổi tên miền, thay đổi cấu trúc permalink hoặc chỉ đơn giản là thay đổi link bài viết).
Để chuyển hướng một trang, tất cả những gì bạn cần làm là thêm một dòng với cấu trúc “Redirect 301 [dấu cách] URL cũ [dấu cách] URL mới” vào trong file htaccess. Bạn có thể xem cách làm việc này trong ví dụ dưới đây:
Redirect 301 /oldpage.html http://www.yourwebsite.com/newpage.html
Redirect 301 /oldfolder/page2.html /folder3/page7.html
Redirect 301 / http://www.mynewwebsite.com/
11. Vô hiệu hóa hotlinking
Hotlinking là việc ai đó sử dụng hình ảnh từ blog/ website của bạn bằng cách liên kết trực tiếp đến URL của hình ảnh. Điều này thường xảy ra khi họ copy toàn bộ nội dung bài viết từ blog/ website của bạn và paste vào site của họ mà không qua chỉ sửa (có thể là do “lười” nên copy cả hình ảnh cho nhanh, không download rồi re-up). Hotlinking có thể tác động tiêu cực đến blog/ website. Ngoài việc làm chậm blog/ website, nó cũng có thể làm tiêu tốn đáng kể băng thông của host.
Thêm đoạn code dưới đây vào tập tin htaccess sẽ giúp ngăn chặn những người khác copy và sử dụng trực tiếp hình ảnh từ blog/ website của bạn:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourotherwebsite.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ http://i.imgur.com/g7ptdBB.png [NC,R,L]
Khi một ai đó xem hình ảnh của bạn tại một site khác, họ sẽ nhìn thấy hình ảnh thay thế (link của nó nằm trong dòng cuối cùng của đoạn code) thay vì ảnh gốc. Bạn có thể sửa đổi hình ảnh này theo ý muốn.
Lưu ý: việc vô hiệu hóa hotlinking có thể gây ra một số vấn đề về hiển thị hình ảnh của bạn trong nguồn cấp dữ liệu RSS cũng như trên các mạng xã hội.
Trên đây là một số thủ thuật với file .htaccess trong WordPress, tôi hy vọng nó sẽ hữu ích đối với bạn. Mọi ý kiến thắc mắc và đóng góp xin vui lòng gửi vào khung bình luận bên dưới để được hỗ trợ.
Nếu bạn thích bài viết này, hãy subscribe blog của tôi để thường xuyên cập nhật những bài viết hay nhất, mới nhất qua email nhé. Cảm ơn rất nhiều. :)
Hi bác!
Cho mình hỏi nếu copy hết đống code trên và kèm theo nhiều code nữa vào file này thì có ảnh hưởng gì đến tốc độ tải trang ko nhỉ?
Nhân tiện cám ơn bài viết chia sẻ bổ ích của bác nhé! Mình mới nên học hỏi được rất nhiều điều.
Chọn lọc thôi bạn ơi. Đừng cái gì cũng nhét hết vào. Có khi site không chạy được luôn chứ đừng nói là load chậm. :D
em muốn chuyển hướng chuyên mục từ có / sang không có / thì viết câu lệnh như thế nào a
Bạn dùng WordPress hay mã nguồn nào thế?
Em dùng wp a . Trước là em để link toàn bộ là có dấy / sau em thêm .html em thêm đoạn này RewriteEngine On
RewriteCond %{REQUEST_URI} /$
RewriteRule ^(.*)/$ /$1.html [R=301,L]
vào để cho nó direct bài viết của em từ / sang .html cái này ok nhưng em lại bị dính cái là chuyên mục với mấy cái tag bị lỗi 404 khi truy cập link có thêm / đăng sau .
website của em : https://www.womantoday.net/
Nếu đổi permalink thì có thể tham khảo bài viết “Thay đổi permalinks trong WordPress mà không bị lỗi 404“. Cần gì redirect bằng httacess như vậy.
Cái này là em bị bị 404 link chuyên mục củ là có dấu “/” giờ không có dấu thôi a cái này fix sao a
Thì bạn thử bỏ đoạn code trong file .htaccess và thay bằng plugin mình hướng dẫn trong bài viết xem sao.
cảm ơn anh Hiếu rất nhiều, cho em hỏi mấy đoạn code trên thì mình paste bên trên hay bên dưới đoạn mã # BEGIN WordPress anh nhỉ ?
Trên hay dưới đều được bạn nhé.
Bạn cho mình hỏi muốn thêm dấu ? trong url sử dụng htaccess thì làm thế nào ví dụ:
domain.com/duong-dan.html -> domain.com/duong-dan.html?thong-tin-bo-xung
Cái này htaccess sao làm được bạn. Mà trên thực tế nó cũng chả liên quan gì đến htaccess.
Bác cho em hỏi là muốn cài code pháo hoa để trang trí website wordpress thì phải làm thế nào ạ???
Bạn thử plugin Rocket Fireworks này xem. :P
Cảm ơn bác nhé!!!
Hôm nay có thời gian rảnh. Và kêu Hiếu viết một bài nói về “Yoast seo description” và “Description trong Google Search” đã thay đổi mấy tháng nay. Nói cụ thể là phần mô tả (description) đã có số ký tự tăng lên hơn gấp đôi (là hơn 350 ký tự) so với trước (lúc trước chỉ khoảng hơn 150 ký tự)
Chia sẻ cho anh em tham khảo.
Mình sẽ có bài viết trong thời gian sắp tới nhé. :)
chết e r a ơi, em nghịch cái file .htaccess này giờ ko đăng nhập được nữa r, a xem giúp em vs e ko học lập trình nen k biet ak, :D
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteRule ^yeu.hien/(.*) /wp-admin/$1 [QSA,L]
RewriteRule ^yeu.hien(.*) /wp-admin/$1 [QSA,L]
RewriteRule ^dangnhap(.*) /wp-login.php$1 [QSA,L]
RewriteRule ^dangnhap/(.*) /wp-login.php$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
File htaccess mặc định đây bạn:
Bạn chỉnh về như vậy là được. :P
ok dc r a ak, hi thank’s a nhe
Nếu đã cài Wordfence thì có cần thực hiện cách này nữa ko nhỉ ?
Mình không dùng Wordfence nên không rõ. :P
Vậy a bảo mật thủ công như vậy hay có dùng thêm plugin bảo mật nào không ?
Mình bảo mật thủ công. Bạn có thể sử dụng plugin Sucuri. Trên blog đã có bài hướng dẫn rồi. :P
anh cho em hỏi làm sao chèn vào trong thư mục dc vậy anh, em kích vào là nó tải về máy à
Bạn phải bấm chọn file rồi click chuột phải và chọn Edit. :P
dạ được rồi anh ơi. à anh cho em hỏi em chỉ mới tạo site nên em cài ssl trong cpanel xong rồi vào setting -> genaral -> chuyển qua https:// là dc rồi đúng ko anh
Dùng plugin Really Simple SSL ấy. Trên blog có bài hướng dẫn rồi. Bạn tìm là thấy. :P