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 khai báo nhưng không đc. Báo lỗi. Những web khác chạy trên cùng 1 host thì khai báo và có indexBing. Mà web này thi không đc. hic
Chào Hiếu.
bạn cho mình hỏi, web của mình không có index bing. tìm hiểu thì có thể do file .htaccess.
Vậy muốn sửa file này để bing index đc thì làm thế nào nhỉ bạn
Cám ơn bạn nhiều
Reset nó về file .htaccess mặc định của WordPress xem sao. Nó chính là đoạn code ở đầu bài viết này. :P
Cám ơn bạn, để mình thử coi!
Hiếu ơi.
Mình thử làm như bạn nói nhưng không đc bạn ah
Theo Hiếu thì còn lỗi gì nữa nhỉ
Thanks
Kiểm tra file robots.txt cũng như permission (CHMOD) của các tập tin và thư mục xem sao. Tập tin thì là 644 còn thư mục là 755. :P
mình đã thử nhưng không đc. robot.txt không cấm và các file và thư mục làm như bạn nói. nhưng đều khong đc
Bạn đã khai báo domain và thêm sitemaps trên Bing Webmasters chưa? :P
có cách nào cho file .php site này chỉ duy nhất site kia try cập đc k?
Mình rewrite url dùng để che dấu đuôi PHP: nhưng không thấy có hiệu lực nhỉ ?
RewriteEngine on
RewriteRule ^product-([0-9]+).html$ product.php?id=$1
e chỉnh đủ cách nhưng vẫn không được
Em dùng chung host với 1 web nua
file .thaccess e thấy 2 nơi
+ 1 nơi đồng cấp với với phantrunquehuuco
+ 1 file htaccess lai nam trong phantrunquehuuco
e chỉnh cả 2 và 1 trong 2 đều không chạy dc và cứ báo lỗi http 500 error
Đoạn code e sử dụng
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
nhưng ban đầu khi không vào được file htaccess có code như sau:
# BEGIN W3TC Browser Cache
Header append Vary User-Agent env=!dont-vary
AddOutputFilterByType DEFLATE text/css text/x-component application/x-javascript application/javascript text/javascript text/x-js text/html text/richtext image/svg+xml text/plain text/xsd text/xsl text/xml image/x-icon application/json
# DEFLATE by extension
AddOutputFilter DEFLATE js css htm html xml
# END W3TC Browser Cache
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Mong anh chỉ giúp làm sao chỉnh đề web phantrunquehuuco.com vào lai bình thường được ạ
Cảm ơn a
Nếu cấu hình file .htaccess và CHMOD chính xác mà vẫn không truy cập được thì hơi vô lý. Cũng có thể do conflict plugin? Nhưng thường lỗi 500 thì là do file .htaccess. :P
Hiếu ơi cho mình hỏi chút, mình bị lỗi thế này: Khi truy cập vào domain.com/wp-admin bị lỗi trắng trang hoàn toàn.
MÌnh đã tạo file htacess như mẫu trên của bạn, và thay thế file htacess ở thư mục gôc. Nhưng khi thử truy cập lại vẫn bị lỗi thế. Mình cũng đã chỉnh DHMODE là 644 :( Không biết là lỗi do đâu nữa!
Rất mong sẽ nhận được sự chỉ giáo và hướng dẫn của bạn về trường hợp này ạ. Mình xin cảm ơn
Đây là đoạn code htacess của mình.
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Mong sớm nhận được sự hồi âm của bạn!
Nội dung file .htaccess mặc định sẽ như thế này bạn nhé:
Bạn thử copy y nguyên và thay thế vào file cũ xem sao. :P
Bác là thánh cmnr :v
em thêm thế này website ko chạy được, có sai gì ko vậy, giúp em với
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
order allow,deny
deny from all
satisfy all
order allow,deny
deny from all
# Block the include-only files.
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]
# disable directory browsing
Options All -Indexes
## EXPIRES CACHING ##
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”
## EXPIRES CACHING ##
Những code được thêm vào phải nằm bên trên đoạn mã này bạn nhé:
# BEGIN WordPressRewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Bạn thêm lần lượt từng đoạn code vào rồi kiểm tra là biết cái nào bị lỗi ngay thôi mà. :P
Mấy đoạn mã trên thì paste vào vị trí nào vậy ban?
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
Bạn thêm vào trên cùng của file .htaccess nhé. :P
Các bác chỉ giùm em cách tao file .htaccess với. cách nào đơn giản nhất í vì em là newbie. Website của em http://etpco.vn/
Yoast SEO hình như có tính năng cho phép chỉnh sửa file htaccess đó. Bạn vào SEO => Tools => Tìm File Editor xem có không. :)
Mình thấy rồi cám ơn Trung Hiếu nhiều. Chúc bạn thành công, hạnh phúc.