Vấn đề
NocoDB (Phiên bản Community) sử dụng cơ chế định tuyến qua Hash Routing, tức là đường dẫn (URL) luôn chứa ký tự dấu thăng (#). Ví dụ: https://my-nocodb.com/dashboard/#/nc/form/xxxx-xxxx-xxxx
Tuy nhiên, hầu hết các hệ thống rút gọn link (như YOURLS, Bitly) theo chuẩn web sẽ loại bỏ phần sau dấu # khi xử lý hoặc chuyển hướng. Điều này dẫn đến lỗi 404 Not Found hoặc chuyển hướng sai về trang chủ Dashboard khi người dùng truy cập link rút gọn.
Giải pháp
Để khắc phục vấn đề này bằng cách tạo một Plugin YOURLS tùy chỉnh.
Cơ chế hoạt động:
- Khi lưu (Shorten): Plugin tự động mã hóa dấu
#thành%23. Hệ thống YOURLS sẽ hiểu đây là một ký tự thông thường và lưu trữ trọn vẹn đường dẫn. - Khi chuyển hướng (Redirect): Plugin can thiệp vào Header chuyển hướng, tự động giải mã
%23trở lại thành#. Trình duyệt người dùng sẽ nhận được link gốc hoàn chỉnh và mở đúng Form/View.
Hướng dẫn Cài đặt
Bước 1: Chuẩn bị
Bạn cần quyền truy cập vào thư mục cài đặt mã nguồn YOURLS trên máy chủ của bạn.
Bước 2: Tạo Plugin
- Truy cập vào thư mục
user/plugins/bên trong mã nguồn YOURLS. - Tạo một thư mục mới có tên:
allow-hash-in-url - Trong thư mục đó, tạo một file tên là plugin.php.
Bước 3: Nhập Code Plugin
Copy và dán toàn bộ đoạn mã PHP sau vào file
plugin.php vừa tạo:
<?php
/*
Plugin Name: Allow Hash in URL
Plugin URI: https://github.com/yourls/yourls
Description: Preserves character # in URLs. Encodes to %23 on save, Decodes back to # on redirect.
Version: 1.1
Author: Businesslab.vn
*/
// Handlers to encode/decode
yourls_add_filter( 'sanitize_url', 'fix_hash_on_save' );
yourls_add_filter( 'redirect_location', 'fix_hash_on_redirect' );
/**
* On Save: Encode # to %23 so it survives sanitization
*/
function fix_hash_on_save( $url ) {
if ( strpos( $url, '#' ) !== false ) {
// Only encode if it's not already encoded
$url = str_replace( '#', '%23', $url );
}
return $url;
}
/**
* On Redirect: Decode %23 back to # so the browser sees a fragment
*/
function fix_hash_on_redirect( $url ) {
// Check if we have the encoded hash
if ( strpos( $url, '%23' ) !== false ) {
// Decode it back to literal #
$url = str_replace( '%23', '#', $url );
}
return $url;
}
?>
Bước 4: Kích hoạt
- Đăng nhập vào trang quản trị Admin của YOURLS.
- Vào menu Manage Plugins.
- Tìm plugin tên là Allow Hash in URL.
- Bấm vào nút Activate (Kích hoạt).
Kiểm tra Kết quả
Bây giờ bạn có thể thử nghiệm:
- Copy một link NocoDB View (có chứa dấu
#).- Ví dụ:
https://data.mydomain.com/dashboard/#/nc/form/abc-123
- Ví dụ:
- Dán vào ô rút gọn của YOURLS.
- Lấy link rút gọn vừa tạo (ví dụ:
https://short.link/xyz) và truy cập thử trên tab ẩn danh. - Nếu trình duyệt mở đúng trang Form của NocoDB → Thành công!

Lưu ý
- Plugin này chỉ hoạt động với các link được tạo mới sau khi cài đặt plugin. Các link cũ đã bị mất dấu
#trong Cơ sở dữ liệu sẽ không tự động sửa được. Bạn cần tạo lại shortlink cho chúng. - Giải pháp này hoàn toàn an toàn và không bị mất đi khi bạn cập nhật phiên bản mới của YOURLS.
Hướng và code được tạo bởi AI - model Gemini 3 pro (high) trên ứng dụng Antigravity
