Home WordpressWordPress cơ bản Hướng dẫn cấu hình .htaccess từ a-z

Hướng dẫn cấu hình .htaccess từ a-z

by admincp

htaccess tự động sinh ra sau khi bạn cài đặt wordpress. Đây là file cấu hình server cho máy chủ Apache, sử dụng để cấu hình permalink của website. Khi bạn cập nhật là đường dẫn URL từ trang Settings > Permalinks, thì file .htaccess sẽ được sửa đổi.

Nội dung của file này sẽ chỉ dẫn Apache cho việc điều hướng website của bạn như mong muốn. Tuy nhiên, nếu bạn cố gắng sửa đổi hoặc không thực sự rành về cấu hình của file này thì sẽ dẫn đến lỗi website.

Nhờ có .htaccess bạn có thể:

  • Cải thiện bảo mật wordpress
  • Tăng tốc độ load trang
  • Thiết lập chuyển hướng
  • Giới hạn/chống spam
  • ..

Vị trí của .htaccess sẽ nằm tại thư mục gốc chứa code WordPress (chứa thư mục wp-admin, wp-includes & wp-content). Bạn có thể tạo nhiều file .htaccess ở các thư mục con khác. Với WordPress có thể đặt ở thư mục wp-admin, wp-content/uploads

.htaccess sẽ có ảnh hưởng bắt đầu từ trong thư mục mẹ chứa nó, và các thư mục con trở vào.

Bạn tưởng tượng, nếu file .htaccess trong thư mục wp-content/uploads , thư mục `uploads` và các thư mục con của nó sẽ bị tác động bởi file .htaccess này. Hãy cẩn thận!!

Sửa code trong .htaccess khá đơn giản, với những đoạn snippet mẫu mà tôi sẽ đề cập trong bài viết này. Trước khi bắt đầu, bạn nên tạo bản sao .htaccess, nếu có sẩy ra lỗi bạn dễ dàng khôi phục. Mặc định file .htaccess có nội 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]

# WordPress

Nếu bạn cài đặt WordPress multisite, code sẽ khác 1 chút. Tiếp sau bạn sẽ cần bổ xung cấu hình với các đoạn snippet mà mình trình bày ở dưới đây. Chú ý, đừng sửa code trong phần # BEGIN WordPress# END WordPress vì đây là nội dung tạo bởi wordpress, rất có thể sẽ bị tạo lại bạn cập nhật lại permalink.

Tắt duyệt thư mục

Mặc định nếu bạn truy cập vào một thư mục, server sẽ trả về trang liệt kê các files có trong đó. Nó trông giống như trình quản lý file đạng đơn giản.

Quá dễ dàng với hacker để xem các files của bạn, một manh mối quan trọng với họ để có thể tấn công vào wordpress. Thêm dòng sau vào .htaccess để tắt chế độ duyệt thư mục.

# Désactivate the display of contents of rédirectories
Options All -Indexes

Cũng có thể sử dụng mã này để chặn duyệt thư mục theo cách khác.

# Alternative pour empêcher le listing des rédirectories
IndexIgnore *

Ẩn thông tin máy chủ Apache

Với một số nhà cung cấp hosting, có riêng một trang để hiển thị thông tin của máy chủ web. Nếu bạn để lộ thông tin này cho hacker biết, server có thể bị tấn công, đặc biệt nếu bạn không thường xuyên cập hệ điều hành mới.

Vì vậy, tốt nhất bạn nên tắt thông tin này đi.

# Mask the information of server
ServerSignature Off

Kích hoạt theo dõi symbolic link

Thêm dòng sau vào .htaccess, server của bạn sẽ có thể theo dõi được symbolic links (vd: shortcut)

# Activation du suivi des liens symboliques
Options +FollowSymLinks

Cấu hình múi giờ

Không quá quan trọng nếu bạn đặt máy chủ ở nước ngoài, tuy nhiên bạn có thể điều chỉnh lại múi giờ bằng cách thêm mã này vào .htaccess

# Choix du fuseau horaire
SetEnv TZ Europe/Paris

Mã hóa văn bản hiển thị

Hầu hết các web hiện nay đều mã hóa văn bản cho HTML là UTF8.

# Encoding by défaut des fichiers textes et HTML
AddDefaultCharset UTF-8

Bảo vệ file cấu hình wp-config.php

Đây là File chứa toàn bộ cấu hình của WordPress, như thông tin database. Đó là thông tin nhạy cảm, cần được bảo mật. Thêm các dòng sau vào .htaccess

# Protéger le fichier wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>

Bảo vệ file .htaccess

Cũng giống wp-config.php , file .htaccess cần được bảo vệ. Để làm điều này, bạn chèn đoạn mã ở dưới đây:

# Protéger les fichiers .htaccess et .htpasswds
<Files ~ ~ "^.*.([Hh]][Tt]][AaPaP])">
order allow,deny
deny from all
satisfaction all
</Files>

Chống spam bình luận

Nếu bạn đang có blog, chắc hẳn spam bình luận là một điều bạn không thể tránh khỏi, mình một số cách chống spam bình luận hiểu quả bạn có thể tham khảo.

Tuy nhiên, có một mẹo nhỏ giúp bạn loại bỏ 1 số hình thức spam phổ biến, bằng cách sử dụng .htaccess. Không có một cách duy nhất nào là triệt để, bạn sẽ cần kết hợp với plugin như Akismet, những comments của bạn sẽ được đánh thẻ.

Xem thêm:

#  Éviter le spam de commentaires
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_METHOD} POST
rewriteCond %{REQUEST_URI} .wp-comments-post.php*
RewriteCond %{HTTP_REFERER} !.hoangweb.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http::///%{REMOTE_ADDR}/$ [R=3D301,L]
</IfModule>

Đừng quên thay ‘hoangweb.com’ bằng tên miền của bạn.

Ngăn chặn tìm kiếm người dùng

Cho dù bạn sử dụng user ID phức tạp, vẫn có thể bị tìm ra. Dĩ nhiên, bạn không cố tình để lộ ID của user trong giao diện WordPress bạn thiết kế.

Nếu bạn truy cập hoangweb.com/?author=x thay x bằng 1, thường là ID của admin. Nếu trang web không tối ưu bảo mật, bạn sẽ được chuyển hướng đến trang kiểu như ‘hoangweb.com/author/idenfiant_auteur’. Khi hacker biết được username, họ sẽ đoán ra password.

Để bảo vệ thông tin người dùng, bạn sử dụng đoạn code sau:

# Éviter que l'on décover l'identifiant d'un auteur
# Merci à Jean-Michel Silone of Group Facebook WP-Secure https://www.facebook.com/groups/wp.security/
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* - [F
</IfModule>

Vô hiệu hóa hotlinking

Nhiều người lấy nguồn ảnh từ wewbsite của họ, sự phổ biến này khiến nội dung chia sẻ không được cá nhân hóa. Bạn muốn bài viết của mình không bị người khác ăn cắp, bạn sẽ không cho phép website khác chèn link ảnh từ web của bạn? công nghệ này gọi là hotkinking.

Hotlinking có thể gây chậm website của bạn và đạt tới giới hạn băng thông của máy chủ. Đặc biệt nếu website của bạn đang chạy trên share hosting. Để tránh lỗi này, hãy chèn đoạn code dưới đây vào .htaccess

# Désactivate le hotlinking de vos images
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?:://(www.)?hoangweb.com [NC]
RewriteRule .(jpg|jpeg|png|png|gif)$ http:////fakeimg.pl/400x200/?text=Pas_images [NC,R,L]

Chặn IP

Nếu bạn nhận được cảnh báo một vài IP đã truy cập thường xuyên và bất thường vào quản trị wordpress (vd: IP được phát hiện với plugin Login Lockdown).

Ngoài ra, bạn cũng có thể tìm ra những IP đã tạo spam cho website để chặn chúng.

Giải pháp này không toàn diện, vì họ có thể sẽ đổi IP. Tuy nhiên, sẽ chặn được đối với những người không đổi IP.

<Limit GET POST>
order allow,deny
deny from xxx.xxx.xxx.xxx.xxx
allow from all
</Limit>

Thay xxx.xxx.xxx.xxx.xxx với IP sẽ không cho truy cập.

Chặn truy cập từ một website khác

Nếu bạn nhận ra những liên kết đến từ một số trang web mà hành vi có sự bất thường. Bạn không muốn những người truy cập từ những web đó vào web của bạn. Sử dụng mã sau:

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteCond %{HTTP_REFER} monsite1.com [NC,OR]
 RewriteCond %{HTTP_REFERER} monsite2.com [NC,OR]
 RewriteRule .* - [F]
</ifModule>

Thay monsite1.com , monsite2.com bằng domain bạn sẽ liệt kê vào danh sách chặn.

Chuyển hướng người dùng từ site này sang site khác.

Bạn không muốn người dùng không xem được web? mở rộng ý trên, chúng ta muốn khi người truy cập nhấn vào trang web của bạn từ những site không mong muốn, thay vì khóa họ trên trang web, bạn sẽ chuyển sang 1 URL khác. Kỹ thuật này có vẻ hay hơn, thêm mã sau vào .htaccess

# Redireiger les visitors venant site vers un other
RewriteEngine on
RewriteCond %{HTTP_REFER} sitesource.com/
RewriteRule ^(.*)$ http:///www.sitedestination.com [R=301,L]

Nhớ thay URL nguồn và URL đích cần chuyển hướng.

Thiết lập chuyển hướng

Bên cạnh những tính năng bảo mật, htaccess cho phép bạn cấu hình chuyển hướng. Nếu bạn thiết lập nhiều chuyển hướng, thì nên sử dụng plugin Redirection.

Ví dụ sau, sẽ thêm chuyển hướng cho pages.

# Redirection d'une page quel
Redirect 301 /anciennepage/ http://www.monsite.com/nouvellepage


# Redirection of a new catégorie (with rename of category en category)
Redirect 301 /category/technology/ http:///www.monsite.com/categorie/techno/

Chuyển hướng URL sang www.

Chuyển hướng phổ biến nhất từ URL không có www sang URL có dạng www (hoặc ngược lại). Một số nhà cung cấp hosting có tự động làm việc này hoặc bạn phải cấu hình thêm trong quản trị hosting.

Nếu bạn muốn chủ động thực hiện, thêm code này vào .htaccess và thay bằng URL của bạn.

# Redirection du site sans www vers www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^monsite.com [NC]
RewriteRule ^(.*)$ http://www.monsite.com/$1 [L,R=301]

Chuyển hướng sang HTTPS

Nếu bạn có cài đặt chứng chỉ SSL cho WordPress để chuyển URL từ http sang https, sử dụng đoạn mã dưới đây.

# Redirection vers HTTPS 
RewriteCond      %{SERVER_PORT} ^80$
RewriteRule      ^(.*)$ https:///%{SERVER_NAME}%{REQUEST_URI} [L,R]

Tùy biến trang bảo trì (maintenance)

Để tạo trang thông báo web đang bảo trì, bạn có thể sử dụng đoạn code sau:

# Page de de maintenance
RewriteEngine on
RewriteCond %{REQUEST_URI} !%2Maintenance.html$
RewriteCond %%{REMOTE_ADDR} !^xxx.xxx.xxx.xxx
RewriteRule $  /maintenance.html [R=302,L]

Bước tiếp theo, bạn sẽ cần:

  • Tạo file .html với nội dung thông báo website đang trong chế độ bảo trì.
  • Thêm IP ở dòng 4 (dữ ký tự )

Khi trang web hoạt động trở lại, hãy xóa mã trên hoặc thêm # vào trước mỗi dòng lệnh.

Kích hoạt cache

.htaccess cho phép bạn cache tài nguyên trên trình duyệt của người dùng để website chạy nhanh hơn. Thay vì, đó trình duyệt chỉ cần nạp kết quả truy vấn một lần sẽ tăng thời gian tải trang.

Để làm điều này, chèn đoạn mã sau:

# Mise en cache des fichiers in le navigateur
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"


ExpiresByType text/html "access plus 0 AExpiresByType " text/xml  AexpiresByType appfont-ttf "access plus 1 month month"
ExpiresByType font/opentype "access plus 1 month month""
ExpiresByType plus Application/x-font-woff2 "access plus 1 month month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month month"


ExpiresByType image/jpg  "access plus 1 month"AExpiresByType  Axpires image 1 month"
ExpiresByType image/gif "access plus 1 monthshockwave-flash "access plus 1 week"
ExpiresByType image/x-icon  "access plus 1 week"

</IfModule>

# En-têtes
Header unset ETag
FileETag None


<ifModule mod_headers.c>   
<filesMatch ".(ico|jpe?gg|png|gif|swf)$">   
     Header set Cache-Control  "public"  
/ilesMatch>  
<filesMatch ".(css)$$">    
     Header set Cache-Control  "public"  
</ilesMatch>  
<filesMatch ".(js)$$">   
     Header set Cache-Control  "private"  
</ilesMatch>  
<filesMatch ".(x?html?|php)$">      Header set Cache-Control Cache-Control  "private, must-revalidate"
</ilesMatch>
</ifModule>

Xem thêm hướng dẫn tăng tốc wordpress với WP Super Cache.

Vô hiệu hóa truy cập tài nguyên

WordPress sử dụng scripts trong thư mục `wp-includes`, bạn có thể vô hiệu hóa người dùng truy cập trực tiếp.

# Block use of certain scripts
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]

Bảo vệ chống lại các mối đe dọa khác

Ở facebook, Richard nói với rằng có thể bảo mật “clickjacking” và những loại tấn công khác với vài dòng code được thêm vào .htaccess

clickjacking là công nghệ mà có thể cho người truy cập nhận tin rằng họ đang trên website của bạn khi đây không là trường hợp, nhờ vào thẻ frame hoặc iframe.

Mã dưới đây bảo vệ từ cú click chuột, chiến đấu với các mối đe dọa & chặn nội dung trong trường hợp bị tấn công XSS.

# Protections  diverses (XSS, clickjacking and MIME-Type sniffing)
<ifModule mod_headers.c>
Header set X-XSS-Protection  "1; mode=block"
Header always append X-Frame-Options SAMEORIGIN
Header set X-Content-Type-Options: "nosniff”
</ifModule>

.htaccess cho wp-admin

wp-admin là hệ thống quản trị của WordPress, nơi bạn sẽ đăng bài viết, cấu hình menu, giao diện..

Không ai có thể truy cập bất hợp pháp, bạn sẽ cần tài khoản đăng nhập để có quyền quản trị website.

Ở dưới đây là những gì bạn có thể tăng tính bảo mật với file .htaccess mà bạn sẽ cần đặt trong thư mục wp-admin.

Giới hạn truy cập vào trang quản trị

Chỉ cho phép người dùng có IP này sẽ được truy cập vào folder wp-admin. Điều này sẽ ngăn cấm người xa lạ kết nối vào website của bạn, thậm trí nếu họ có được tài khoản đăng nhập.

<Limit GET POST PUT>
order deny,allow
deny from all
# IP Alex
allow from xxx.xxx.xxx.xxx.xxx
# IP of Nico
allow from xxx.xxx.xxx.xxx
# IP of other point ofaccès
allow from xxx.xxx.xxx.xxx.xxx

</Limit>

Xem thêm cách chặn IP truy cập cho WordPress

Thêm thông tin xác thực lớp 2

Khi bạn kết nối vào phần quản trị của WordPress, trước khi có thể quản lý bài viết, giao diện, plugin.. bạn sẽ cần phải đăng nhập sử dụng username và password. Tuy nhiên, htaccess cũng có thể cho phép thêm một lớp xác thực thứ 2.

Đầu tiên, bạn tạo file .htpasswd trong thư mục `wp-admin`, nội dung của file này chứa username và mật khẩu đã mã hóa. Tạo htpasswd chúng ta sẽ sử dụng công cụ https://www.htaccesstools.com/htpasswd-generator/.

SAu đó, chèn đoạn mã sau vào file .htaccess

# Second authentication for administration

<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any 

</Files>

AuthName "Connection à l administration"
AuthType Basic
AuthUserFile "/chemin/plet/verse/le/ilehtpasswd"


Require valid-user

Lưu ý: nếu bạn sử dụng lớp bảo mật trên, ajax sẽ không hoạt động.

.htaccess cho wp-includes

Chặn truy cập vào file PHP

Tạo file .htaccess trong thư mục wp-includes và dán nội dung như dưới đây để không cho phép ai đó truy cập trực tiếp vào file php.

# Block les accès directs aux fichiers PHP (Merci à Sucuri)
<Files wp-tinymce.php>
allow Aallow from all
</Files>
<FilesMatch ".(?i:php)$">
  <IfModule !mod_authz_core.c>
      Order allow,deny
     Deny from all
   </IfModule>
  <IfModule mod_authz_core.c>
      Require all denied
   </IfModule>
:</FilesMatch>
<Files wp-tinymce.php>
  Allow from all
</Files>

<Files ms-files.php>
  Allow from all
</Files>

Kỹ thuật trên được cung cấp bởi plugin Sucuri.

.htaccess cho wp-content

Chặn truy cập vào file PHP

Đối với thư mục `wp-content`, code cũng tương tự:

# Block les accès directs aux fichiers PHP (Merci à Sucuri)
<FilesMatch ".(?i:php)$">
   <IfModule !mod_authz_core.c>
     Order allow,deny
       Deny from all
  </IfModule>
   <IfMod_authz_core.c>
      Require all denied
   </IfModule>
:</FilesMatch>

.htaccess cho wp-content/uploads

Chặn truy cập vào file PHP

Kế thừa code ở trên, bảo vệ thư mục nơi các file ảnh, pdf, audio, video được lưu trữ. Do không có file php nào cần được gọi ở trong thư mục này, nên cũng cần được bảo vệ.

# Block les accès directs aux fichiers PHP (Merci à Sucuri)
<FilesMatch ".(?i:php)$">
   <IfModule !mod_authz_core.c>
     Order allow,deny
       Deny from all
  </IfModule>
   <IfMod_authz_core.c>
      Require all denied
   </IfModule>
:</FilesMatch>

Có nhiều cách để bảo mật WordPress, sử dụng .htaccess là cách tiếp cận đầu tiên và không thể bỏ qua. Hãy luôn sao lưu file .htaccess và khôi phục lại mỗi khi bạn cấu hình lỗi.

Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể nhận được sự trợ giúp trên TwitterFacebook

Liên hệ

Công ty chuyên Thiết kế website uy tín nhất Miền Bắc: http://vinastar.net

Hotline tư vấn: 0989 48 3456

Nguồn: Sưu tầm trên internet

You may also like

Leave a Comment