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. :)





mình khônng biết file htacsecc nằm ở đâu
Nằm trong thư mục cài đặt WordPress đó bạn. Ngang hàng với các thư mục wp-content, wp-includes…
4.
Có một số tập tin mà người dùng không bao giờ được phép truy. 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 mã sau vào tập tin .htaccess:
->> cái trên đó dùng chặn truy cập file hình ảnh png duoc không cậu
ví dụ mình có 1 link hình ntn thì sẽ viết lại code ntn
Anh ơi, WordPress của em hông có file .htaccess là sao nhỉ?
Không có thì bạn tự tạo được mà. Dùng NotePad mà tạo. Nội dung cơ bản giống với đoạn code đầu tiên trong bài viết của mình. :D
Nghe nói file này sẽ nằm ẩn, dùng FTP cũng không thấy, vậy làm sao biết đã có hay chưa có file này vậy Hiếu? Sau khi mình copy code bạn chai sẻ vào Note Pad save lại, up lên rồi đổi đuôi txt sang php có phải ko?
Bạn dùng shared host hay VPS? Có cPanel không? :P
Mình xài VPS logg-in vào qua FTP bạn ạ. Bạn có file .htaccess chuẩn gửi mình xin bản đỡ phải sưu tầm để up lên VPS luôn (chủ yếu để bảo mật, tăng tốc)
VPS của bạn chạy web server Apache, NginX hay LiteSpeed? File .htaccess thì bạn phải tự tổng hợp và chọn lọc cho phù hợp thôi. Không có file nào là chuẩn cả. Tùy vào nhu cầu sử dụng của mỗi người và đặc điểm, tính năng của mỗi trang web. :P
Dạ của 000space.com anh ạ
file .htaccess có nội dung như thế này ạ:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Ủa. Lạ nhỉ. File .htaccess hoàn toàn bình thường. Bạn thử đăng ký 1 host miễn phí khác xem sao. Haphost hoặc FreeHostia chẳng hạn. :P
Dạ admin ơi !
Cái web này của em, em đã thử cài theme khác , em không cài plugin nào,em cũng bật debug không báo lỗi gì cả.vậy mà khi em post lại bài đấy vẫn bị lỗi 403 Access denied anh ạ.
có phải là do em dùng host free nên mới bị lỗi này không anh
Chào bạn. Bạn đang sử dụng host miễn phí của nhà cung cấp nào vậy? Bạn cho mình xem file .htaccess được không? :P
Dạ ! Anh ơi nó không báo lỗi gì anh ạ.
Xin lỗi. Bạn có thể comment lại được không? Bình luận của bạn bị vào mục spam và mình đã lỡ tay xóa mất. @@!
Anh ơi!
Em làm như anh bảo rồi nhưng vẫn không được anh ạ
Không hiếu sao cứ cách 3 bài thì có 1 bài bị ” 403 Access denied ”
Anh xem giúp em với ạ?
Em cảm ơn ạ
Bạn đã kiểm tra bằng debug hay error log chưa? Nó có báo lỗi gì không? :P
Admin ơi! Giúp em với!!
Có một bài viết em bị lỗi “403 Access denied ”
Đây là link bài viết:
Em tìm kiếm trên mạng nhưng không tìm được cách giải quyết.
Admin giúp em được không ạ?
Em cảm ơn trước ạ!
Chào bạn. Bạn thử bật chức năng Debug của WordPress trong wp-config.php lên xem có bị lỗi xung đột plugin không. :P Hình như bạn đang sử dụng WP Super Cache thì phải. Thử xóa cache và tắt plugin đó đi xem sao nhé. :)
Bài viết hay, rất hữu ích cảm ơn bác nhá!
Hy vọng bạn thường xuyên ghé thăm và ủng hộ blog của mình. :)
Mình đang xài nginx, có cách nào xài các thủ thuật này của apache cho nginx ko bạn nhỉ? :)
Mình không thạo về Nginx cho lắm. :P Các thủ thuật này chỉ áp dụng cho máy chủ Apache thôi bạn nhé. :)