# Công cụ website

> Chuyển hướng, thư mục có mật khẩu, chống hotlink, trang lỗi riêng, thiết lập PHP riêng cho từng website và tường lửa ứng dụng web, tất cả trong tab Công cụ.

Source: https://zopanel.net/vi/docs/website-tools  
Updated: 2026-10-07

Tab **Công cụ** của website (**Website → Quản lý → Công cụ**) gom các thiết lập mà bình thường bạn phải tự viết trong `.htaccess` hoặc file nginx. Mọi thay đổi đều được kiểm tra và cấu hình nginx được thử trước khi áp dụng; nếu thay đổi bị từ chối, thiết lập cũ được giữ nguyên.

## Chuyển hướng

Chuyển khách từ địa chỉ cũ sang địa chỉ mới.

1. Trong thẻ **Chuyển hướng**, bấm **Thêm chuyển hướng**.
2. Điền **Từ đường dẫn** (ví dụ `/trang-cu`) và **Đến URL hoặc đường dẫn** (ví dụ `https://example.com/trang-moi` hoặc `/trang-moi`).
3. Chọn mã trạng thái: **301** (vĩnh viễn, mặc định), **302**, **307** hoặc **308**.
4. Tuỳ chọn bật **Cả thư mục** để chuyển mọi thứ bên dưới đường dẫn, và **Giữ phần sau đường dẫn** để nối phần còn lại của đường dẫn vào đích.
5. Bấm **Lưu**.

| Từ đường dẫn | Cả thư mục | Giữ phần sau đường dẫn | Kết quả |
| --- | --- | --- | --- |
| `/trang-cu` | tắt | – | Chỉ `/trang-cu` được chuyển hướng. |
| `/blog` | bật | tắt | `/blog` và mọi thứ bên dưới đều về cùng một đích. |
| `/blog` | bật | bật | `/blog/bai-1` → `<đích>/bai-1` (giữ query string). |
| `/` | bật | bật | Chuyển toàn bộ website sang tên miền mới, giữ nguyên đường dẫn. |

Chuyển toàn bộ website bằng `/` và **Cả thư mục** vẫn gia hạn SSL bình thường, vì đường dẫn xác minh chứng chỉ không bao giờ bị chuyển hướng. Mỗi website có tối đa 500 chuyển hướng.

## Thư mục có mật khẩu

Khách phải đăng nhập (HTTP basic authentication) mới mở được các thư mục này. PHP bên trong vẫn chạy bình thường, nên bạn có thể bảo vệ trang quản trị của ứng dụng.

1. Trong thẻ **Thư mục có mật khẩu**, bấm **Bảo vệ thư mục**.
2. Nhập **Thư mục** dưới dạng đường dẫn URL, ví dụ `/admin` (dùng `/` cho toàn bộ website).
3. Đổi **Lời nhắc** nếu muốn (mặc định `Restricted`).
4. Thêm một hoặc nhiều người dùng với **Tên đăng nhập** và mật khẩu (8 đến 128 ký tự). Bấm **Thêm người dùng** để thêm nữa.
5. Bấm **Lưu**.

Khi sửa lại, để trống ô **Mật khẩu (để trống = giữ nguyên)** để giữ mật khẩu hiện tại của người dùng. Mật khẩu được lưu dưới dạng hash SHA-512 crypt, không bao giờ lưu dạng rõ. Giới hạn: 50 thư mục được bảo vệ mỗi website và 100 người dùng mỗi thư mục.

## Chống hotlink

Ngăn website khác nhúng ảnh, video, file tải của bạn và dùng băng thông của bạn.

1. Trong thẻ **Chống hotlink**, gạt công tắc **Bật**.
2. Ở **Cho phép thêm các tên miền**, liệt kê website đối tác hoặc CDN, cách nhau bởi dấu phẩy (ví dụ `doitac.com, cdn.example.com`). Subdomain của chúng cũng được cho phép.
3. Ở **Loại file**, liệt kê phần mở rộng cần bảo vệ, hoặc để trống để dùng mặc định: `jpg, jpeg, png, gif, webp, avif, svg, bmp, mp4, webm, mp3, ogg, pdf, zip`.
4. Bấm **Lưu**.

Request từ chính tên miền của bạn, các tên miền phụ và subdomain của chúng luôn được phép, truy cập trực tiếp (không có referrer) cũng vậy. Referrer khác nhận lỗi HTTP 403. File trang và file code (`php`, `html`, `htm`, `js`, `css`, `json`, `xml`, `txt`) không thể bật chống hotlink, nên bạn không vô tình làm hỏng website của mình. Thẻ này không hiển thị với website proxy.

## Trang lỗi riêng

Hiển thị trang của bạn thay cho trang lỗi mặc định. Nhập đường dẫn trong thư mục gốc cho các mã **403**, **404**, **500**, **502** và **503**, ví dụ:

```text
404  →  /errors/404.html
503  →  /errors/bao-tri.html
```

Để trống ô nào thì giữ trang mặc định cho mã đó. Hãy tải file lên bằng Quản lý file trước. Trang lỗi riêng không áp dụng cho website proxy; ứng dụng của bạn tự trả trang lỗi.

## Thiết lập PHP cho website

Website PHP có thẻ **Thiết lập PHP cho website**. Thẻ nhắc lại các giới hạn lấy từ gói hosting (giới hạn bộ nhớ và thời gian chạy tối đa) và giới hạn tải lên 256 MB.

| Thiết lập | Giá trị hợp lệ | Ví dụ |
| --- | --- | --- |
| `upload_max_filesize` | 1M đến 256M | `128M` |
| `post_max_size` | 1M đến 256M | `128M` |
| `max_input_vars` | 100 đến 999999 | `5000` |
| `max_input_time` | `-1` hoặc 0 đến 9999 giây | `60` |
| `session.gc_maxlifetime` | số giây | `1440` |
| `date.timezone` | múi giờ hợp lệ | `Asia/Ho_Chi_Minh` |
| `short_open_tag` | mặc định, On hoặc Off | |
| `output_buffering` | mặc định, Off hoặc 4096 | |

Ô để trống giữ giá trị mặc định của PHP. ZoPanel ghi các giá trị vào `.user.ini` trong thư mục gốc, bên trong khối đánh dấu `; BEGIN ZoPanel` … `; END ZoPanel`; những dòng bạn tự thêm vào file vẫn được giữ. Pool PHP-FPM của tài khoản được reload để thay đổi có hiệu lực ngay. Khách truy cập không tải được file `.user.ini`.

Ở chế độ Apache, các dòng `php_value` và `php_flag` trong `.htaccess` bị bỏ qua: hãy dùng thẻ này.

## Tường lửa ứng dụng web

Nếu quản trị viên đã cài tường lửa, mỗi website có thẻ **Tường lửa ứng dụng web**. Tường lửa dùng ModSecurity với bộ luật OWASP CRS để chặn SQL injection, XSS, chèn file, thực thi mã từ xa và công cụ quét lỗ hổng.

| Chế độ | Tác dụng |
| --- | --- |
| **Bật (chặn tấn công)** | Request vi phạm bị chặn. |
| **Chỉ phát hiện (ghi log)** | Request vi phạm được ghi log nhưng vẫn cho qua. |
| **Tắt** | Tường lửa không kiểm tra website này. |

Cách triển khai khuyên dùng:

1. Đặt **Chỉ phát hiện (ghi log)** trong vài ngày.
2. Xem bảng sự kiện (thời gian, IP, request, lý do). Mỗi sự kiện được đánh dấu **đã chặn** hoặc **đã ghi**.
3. Nếu một request hợp lệ bị đánh dấu (ví dụ page builder hay chức năng import), bấm **Cho phép**. Mã luật tương ứng được thêm vào **Luật được bỏ qua**, chỉ áp dụng cho website này. Bấm vào luật trong danh sách đó để **Bỏ** ngoại lệ.
4. Chuyển sang **Bật (chặn tấn công)**.

File tĩnh như ảnh, CSS, JavaScript không đi qua tường lửa, giúp tiết kiệm CPU.

**Dành cho quản trị viên:** cài tường lửa ở **Bảo mật → Tường lửa ứng dụng web → Cài tường lửa**, hoặc từ **Thành phần**. Tường lửa chỉ được nạp khi có ít nhất một website dùng (khoảng 25 MB RAM mỗi worker nginx). **Áp dụng cho mọi website** đặt một chế độ cho tất cả website cùng lúc, và thẻ cho biết bao nhiêu website đang chặn, chỉ ghi log hoặc đã tắt.

## Hỗ trợ .htaccess (chế độ Apache)

Thẻ **Hỗ trợ .htaccess (chế độ Apache)** trong tab **Công cụ** chuyển website sang chế độ Apache để rule `.htaccess` hoạt động như trên cPanel hay DirectAdmin. Những gì được hỗ trợ và bị bỏ qua được mô tả trong [Website và PHP](/vi/docs/hosting).
