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. Perfect for creating user-friendly shortcuts, maintaining backward compatibility after URL changes, or implementing a simple URL shortening system.
- 🚀 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
Add this to your Cargo.toml
:
[dependencies]
link-bridge = "0.2.2"
use link_bridge::Redirector;
// 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();
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.
- 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
The library creates complete HTML5 pages that work across all browsers:
<!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>
The library uses 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),
}
For comprehensive API documentation, examples, and advanced usage patterns, visit:
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
git clone https://github.com/jerus-org/link-bridge.git
cd link-bridge
cargo build
cargo test
# Run all tests
cargo test
# Run with coverage
cargo tarpaulin --out html
See CHANGELOG.md for version history and breaking changes.
This project is licensed under the MIT Licence - see the LICENCE file for details.
- Inspired by URL shortening services like bit.ly and tinyurl
- Thanks to the Rust community for feedback and contributions
For questions, issues, or feature requests, please open an issue on GitHub.