Windows 桌面快捷方式本質是 .url 文本文件,格式為 INI 風格。PHP 動態生成並以 application/octet-stream 下發,瀏覽器彈出「保存為」對話框,用戶保存到桌面即可一鍵訪問。
<?php
// 配置
$siteUrl = 'https://www.example.com/';
$shortcutName = '我的網站'; // 保存的文件名 (不含 .url)
// 構建 .url 內容
$content = <<
<a href="shortcut.php" class="btn btn-primary">
<i class="bi bi-desktop"></i> 發送到桌面
</a>
<?php
// current_page_shortcut.php
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
$currentUrl = "{$protocol}://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
$pageTitle = '當前頁面'; // 可從 獲取或傳參
$content = "[InternetShortcut]\nURL={$currentUrl}\nIDList=\n[{000214A0-0000-0000-C000-000000000046}]\nProp3=19,2\n";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . rawurlencode($pageTitle) . '.url"');
echo $content;
?>
favicon.ico (16x16, 32x32, 48x48 多尺寸)<link rel="icon" href="/favicon.ico">IconFile=https://example.com/favicon.icoIconIndex=0| 平台 | 支持 .url | 替代方案 |
|---|---|---|
| Windows | ✅ 原生支持 | — |
| macOS | ❌ | 生成 .webloc (XML 格式) 或引導用戶拖拽網址到 Dock |
| Linux (GNOME/KDE) | ❌ | 生成 .desktop 文件 (Type=Link, URL=...) |
| 移動端 | ❌ | 引導「添加到主屏幕」(PWA Manifest) 或分享→添加到主屏幕 |
<?php
function generateShortcut(string $url, string $title): array {
$win = "[InternetShortcut]\nURL={$url}\nIconFile={$url}favicon.ico\nIconIndex=0\n";
$mac = "\n\n\n\nURL {$url} \n \n ";
$linux = "[Desktop Entry]\nType=Link\nURL={$url}\nName={$title}\nIcon={$url}favicon.ico\n";
return [
'windows' => ['content'=>$win, 'ext'=>'url', 'mime'=>'application/octet-stream'],
'macos' => ['content'=>$mac, 'ext'=>'webloc', 'mime'=>'application/x-plist'],
'linux' => ['content'=>$linux, 'ext'=>'desktop', 'mime'=>'application/x-desktop'],
];
}
// 使用
$shortcuts = generateShortcut('https://example.com/', 'Example Site');
// 前端提供下載鏈接或按鈕
?>
rawurlencode() 編碼,防止中文亂碼或注入