Cấu hình quy tắc và chuyển hướng bằng .htaccess

Tệp .htaccess là một tệp cấu hình ở cấp thư mục, được hỗ trợ bởi máy chủ web Apache. Nó cho phép bạn thay đổi các thiết lập máy chủ web (như bật hoặc tắt các tính năng) cho một tài khoản cụ thể mà không ảnh hưởng đến cấu hình toàn cục của máy chủ.

Tệp này áp dụng các thiết lập của nó cho toàn bộ thư mục nơi nó được đặt, bao gồm tất cả các tệp và thư mục con bên trong thư mục đó. Bất kỳ thay đổi nào được thực hiện trong tệp .htaccess sẽ được áp dụng ngay lập tức mà không cần khởi động lại máy chủ.

Cách xác định vị trí tệp .htaccess

Để tìm tệp .htaccess:  

1. Truy cập vào tài khoản Spaceship của bạn >> chọn Hosting Manager trong Launchpad >> Quản lý bên cạnh một gói hosting >> Tệp và Lưu trữ >> Quản lý Tệp gần tên website.

2. Bạn sẽ được chuyển đến thư mục gốc của tên miền. 

3.  Nếu bạn cần chỉnh sửa tệp .htaccess cho tên miền, hãy tìm tệp .htaccess trong thư mục gốc của tên miền, nhấp chuột phải vào nó và chọn tùy chọn Chỉnh sửa :


LƯU Ý: Đảm bảo rằng "Hiển thị tệp ẩn (dotfiles)" đã được bật trong menu Cài đặt:


4. Nếu không có tệp .htaccess trong Trình quản lý tệp, bạn có thể tạo một tệp mới bằng nút + Tệp:


5. Bạn đã sẵn sàng thêm các quy tắc cấu hình của riêng mình và lưu lại.
   

Danh sách các quy tắc .htaccess thường dùng

Chặn 

Phương pháp này cho phép bạn chặn người dùng dựa trên địa chỉ IP hoặc tên miền của họ. Nó đặc biệt hữu ích để hạn chế quyền truy cập của những khách truy cập không mong muốn hoặc chỉ cho phép chủ sở hữu truy cập vào các khu vực nhất định của trang web, chẳng hạn như khu vực quản trị.

Để áp dụng các quy tắc chặn cụ thể, hãy tạo một tệp .htaccess với nội dung sau:

(Để cho phép mọi người khác truy cập và chặn người dùng có địa chỉ IP X.X.X.X)

<RequireAll>

Require all granted

Require not ip X.X.X.X

</RequireAll>

(Để chặn tất cả khách truy cập ngoại trừ các IP X.X.X.X và Y.Y.Y.Y cụ thể)

<RequireAll>

Require all denied

Require ip X.X.X.X

Require ip Y.Y.Y.Y

</RequireAll>

LƯU Ý: Không sử dụng các chỉ thị đã lỗi thời Allow, DenyOrder với chỉ thị mới Require này.

Mod_Rewrite (quy tắc chuyển hướng)

Mod_Rewrite xác định cách các trang web và URL được hiển thị cho khách truy cập.

Theo mặc định, Mod_Rewrite ánh xạ một URL tới đường dẫn hệ thống tệp tương ứng. Tuy nhiên, nó cũng có thể chuyển hướng một URL sang URL khác.

Trước khi thiết lập chuyển hướng, điều quan trọng là chọn loại chuyển hướng phù hợp nhất với nhu cầu của bạn:

  • Chuyển hướng vĩnh viễn (301): Chuyển hướng này gửi mã trạng thái 301, cho biết trang đã được chuyển vĩnh viễn. Nó được lưu vào bộ nhớ đệm của trình duyệt, báo hiệu cho các công cụ tìm kiếm và trình duyệt cập nhật URL trong cơ sở dữ liệu của họ. Đây là loại chuyển hướng phổ biến nhất.

  • Chuyển hướng tạm thời (302): Chuyển hướng này gửi mã trạng thái 302, cho biết việc chuyển là tạm thời. Trình duyệt sẽ không lưu chuyển hướng này vào bộ nhớ đệm, và mặc dù nó sẽ chuyển hướng khách truy cập và công cụ tìm kiếm, trang gốc vẫn sẽ tiếp tục được lập chỉ mục. Loại chuyển hướng này được khuyến nghị trừ khi bạn chắc chắn rằng URL sẽ không thay đổi trong tương lai.

Dưới đây là danh sách một số chuyển hướng phổ biến và hữu ích nhất có thể cấu hình thông qua tệp .htaccess:

Chuyển hướng vĩnh viễn từ example1.com sang example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com/$1" [R=301,L]

Chuyển hướng tạm thời từ exampledomain1.com sang exampledomain2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^(.*)$ "http\:\/\/example2\.com\/" [R=302,L]

LƯU Ý: Dưới đây là các ví dụ về chuyển hướng vĩnh viễn. Chuyển hướng tạm thời có thể được định nghĩa bằng cách thay [R=301,L] bằng [R=302,L] ở cuối đoạn mã (nếu cần).

Chuyển hướng từ example1.com/subfolder sang example2.com

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example1\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example1\.com$

RewriteRule ^subfolder/$ "http\:\/\/example2\.com\/" [R=301,L]

Chuyển hướng từ HTTP sang HTTPS cho example.com

RewriteEngine On

RewriteCond %{HTTPS} !=on

RewriteRule .* https://example.com%{REQUEST_URI} [R,L]

hoặc

RewriteCond %{SERVER_PORT} 80

RewriteCond %{HTTP_HOST} ^example\.com$ [OR]

RewriteCond %{HTTP_HOST} ^www\.example\.com$

RewriteRule ^(.*)$ https://www.example.com/$1 [R,L]

Chuyển hướng từ non-WWW sang WWW

  • đối với bất kỳ tên miền nào, .htaccess sẽ có hiệu lực:

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]

  • đối với một tên miền cụ thể:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^example\.com$ [NC]

RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

Chuyển hướng từ WWW sang non-WWW

  • đối với bất kỳ tên miền nào .htaccess sẽ có hiệu lực:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]

RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

  • đối với một tên miền cụ thể:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.example\.com [NC]

RewriteRule (.*) http://example.com/$1 [R=301,L]

Chuyển hướng tất cả các trang example.com sang các trang domain.com tương ứng

RedirectMatch 301 ^/(.*)$ http://domain.com/$1

LƯU Ý: Tất cả tên trang phải trùng khớp trên cả hai tên miền, nếu không chuyển hướng sẽ dẫn đến thông báo "Không tìm thấy trang".

Chuyển hướng một trang sang URL mới

Redirect 301 /old_page.html http://www.domain.com/new_page.html

LƯU Ý: Kỹ thuật này có thể hữu ích để chuyển hướng một trang đã xóa sang lỗi 404, hoặc để điều chỉnh SEO sau khi cập nhật các tham chiếu nội dung.

Ủy quyền/xác thực 

Loại quy tắc này xác định các hạn chế bảo mật cho một thư mục hoặc thư mục con. Bạn có thể bảo vệ thư mục bằng mật khẩu để bất kỳ ai cố gắng truy cập sẽ được yêu cầu nhập tên người dùng và mật khẩu.

Để thiết lập bảo vệ này:  

1. Tạo thư mục bạn muốn bảo vệ trong thư mục /home/cpanel_user/.htpasswds/ (ví dụ, cho domain.com/test, đường dẫn là .htpasswds/domain.com/test/).

2. Trong thư mục này, tạo một tệp passwd và thêm thông tin truy cập đã mã hóa bằng một trình tạo trực tuyến.

3. Thêm các chỉ thị sau vào tệp .htaccess:

AuthType Basic

AuthName "Directory Name"

AuthUserFile "/home/cpanel_user/.htpasswds/public_html/test/passwd"

require valid-user

Trang lỗi tùy chỉnh

Tính năng này cho phép bạn tạo các trang lỗi cá nhân hóa cho website của mình. Đây là một tùy chọn hữu ích vì nó cho phép bạn hiển thị thông báo lỗi phù hợp với giao diện website khi có URL bị hỏng. Điều này giúp tránh hiển thị lỗi mặc định '404 File Not Found’ và thay vào đó trả về một trang lỗi được thiết kế riêng với hướng dẫn giúp người dùng quay lại nội dung website, tránh gây nhầm lẫn.

Để thiết lập trang lỗi tùy chỉnh, hãy thêm đoạn văn bản sau vào tệp .htaccess:

ErrorDocument 404 /404.html

Dòng này hướng dẫn máy chủ web Apache tải tệp 404.html nằm ở thư mục gốc của tên miền mỗi khi xảy ra lỗi 404 (Không tìm thấy tệp).

LƯU Ý: Để tạo trang lỗi tùy chỉnh cho các lỗi khác (như 403 hoặc 500), chỉ cần thay 404 bằng mã lỗi tương ứng và /404.html bằng đường dẫn đến tệp lỗi tùy chỉnh của bạn.

Vô hiệu hóa các quy tắc .htaccess hiện có

Nếu bạn cần tạm thời vô hiệu hóa một số quy tắc hiện có, chẳng hạn để kiểm tra, bạn có thể dễ dàng chú thích chúng. Để làm điều này, chỉ cần thêm dấu thăng (#) ở đầu dòng.

Ngoài ra, bạn có thể vô hiệu hóa một dòng hoặc một khối dòng bằng cách chọn chúng và sử dụng phím tắt Ctrl + / .

Cần có địa chỉ email hợp lệ