透過 PHP 動態產生 .url 檔案,讓使用者下載後雙擊即可開啟指定網址,適用於「加入我的最愛」、「桌面捷徑」等行銷場景。
<?php
function downloadUrlShortcut(string $url, string $filename = 'website.url'): void
{
// 驗證 URL 格式
if (!filter_var($url, FILTER_VALIDATE_URL)) {
http_response_code(400);
exit('無效網址');
}
// .url 內容格式(Windows 標準)
$content = "[InternetShortcut]\r\n";
$content .= "URL={$url}\r\n";
$content .= "IDList=[{000214A0-0000-0000-C000-000000000046}]\r\n";
$content .= "Prop3=19,2\r\n";
// 可選:自訂圖示
// $content .= "IconFile=https://example.com/favicon.ico\r\n";
// $content .= "IconIndex=0\r\n";
// 發送下載標頭
if (ob_get_level()) ob_end_clean();
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . rawurlencode($filename) . '"');
header('Content-Length: ' . strlen($content));
header('Cache-Control: private, must-revalidate');
header('Pragma: public');
echo $content;
exit;
}
// 使用範例
$targetUrl = 'https://blog.example.com/';
$fileName = '我的部落格.url'; // 中文檔名需 rawurlencode
downloadUrlShortcut($targetUrl, $fileName);
| 欄位 | 說明 | 必要 |
|---|---|---|
| [InternetShortcut] | 區段標識 | 是 |
| URL | 目標網址 | 是 |
| IDList | Shell 物件識別碼(固定值) | 否 |
| IconFile | 自訂圖示路徑(.ico、.exe、.dll) | 否 |
| IconIndex | 圖示索引 | 否 |
| HotKey | 熱鍵 | 否 |
.webloc (XML 格式) 或 .url 亦可被 Safari 支援.desktop 檔案([Desktop Entry] Type=Link URL=...)$url 為白名單域名,防止釣魚連結