Expand description
§link-bridge
A lightweight Rust library for creating URL redirects with short names that generate web pages redirecting to longer links on your website.
This crate provides a simple and efficient way to create HTML redirect pages that automatically forward users from short, memorable paths to longer URLs on your website. It’s perfect for creating user-friendly shortcuts, maintaining backward compatibility after URL changes, or implementing a simple URL shortening system.
§Features
- 🚀 Fast and lightweight - Minimal dependencies and efficient operation
- 🔧 Simple API - Easy-to-use interface for creating redirects
- 🎯 URL validation - Ensures paths contain only valid characters
- 📁 Automatic file management - Creates directories and HTML files automatically
- 📋 Registry system - Prevents duplicate redirects and ensures consistency
- 🌐 Standards compliant - Generates proper HTML5 with multiple redirect methods
- 🔒 Safe - Built with Rust’s memory safety and error handling
§Quick Start
Add this to your Cargo.toml
:
[dependencies]
link-bridge = "0.2.2"
§Basic Usage
use link_bridge::Redirector;
use std::fs;
// Create a redirector for a URL path
let mut redirector = Redirector::new("api/v1/users").unwrap();
// Optionally customize the output directory
redirector.set_path("redirects");
// Generate the redirect HTML file
let redirect_path = redirector.write_redirect().unwrap();
// Clean up for example
fs::remove_dir_all("redirects").ok();
This creates an HTML file that automatically redirects visitors from your short URL to the longer target path using multiple redirect methods for maximum compatibility.
§How It Works
- URL Validation: Input paths are validated to ensure they contain only safe characters
- Unique Naming: Short file names are generated using base62 encoding and timestamps
- Registry Check: System checks if a redirect for this URL path already exists
- HTML Generation: Complete HTML5 pages are created with multiple redirect methods:
- Meta refresh tag (universal browser support)
- JavaScript redirect (faster when JS is enabled)
- Manual fallback link (accessibility and fail-safe)
- File Management: Directories are created automatically and files are written to disk
- Registry Update: The registry is updated to track the new redirect mapping
§Generated HTML Structure
The generated HTML files include:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=/your/target/path/">
<script type="text/javascript">
window.location.href = "/your/target/path/";
</script>
<title>Page Redirection</title>
</head>
<body>
If you are not redirected automatically, follow this
<a href='/your/target/path/'>link</a>.
</body>
</html>
§Error Handling
The library uses the RedirectorError
type for comprehensive error handling:
use link_bridge::{Redirector, RedirectorError};
match Redirector::new("invalid?path") {
Ok(redirector) => println!("Success!"),
Err(RedirectorError::InvalidUrlPath(e)) => {
println!("Invalid path: {}", e);
}
Err(e) => println!("Other error: {}", e),
}
Structs§
- Redirector
- Manages URL redirection by generating short links and HTML redirect pages.
Enums§
- Redirector
Error - Errors that can occur during redirect operations.