# [メタ情報] # 識別子: マイライブラリXserverのrdphp_exe # システム名: マイライブラリXserverのrd.php # 技術種別: Misc # 機能名: Misc # 使用言語: php # 状態: 実行用 # [/メタ情報] 要約:指定された rd.php は、指定ID(例:id=KJCtDDxe)に対応するメディアURLを、JSONデータ(dropbox_wp_library.json)から検索し、対応するURLへ302リダイレクトするPHPスクリプトである。拡張子付き/なしや大文字小文字の違いにも対応し、JSONの複数候補パスを順に探索する。サーバー種別(Dropbox、Synology、pCloudなど)に応じて出力URLを生成し、v パラメータにバージョン情報を付与。?diag=1では内部状態をテキストで出力し、エラー時はHTTPコードを返す。 Xserver WordPressサーバー rd.php /xxxxxxxx.com/public_html/ 0) ? $column_M : $select_no; $path_crc = sprintf('%u', crc32($path_only)); $path_tail3 = substr($path_crc, -3); $ver = (string)$base_ver . (string)$server_code . (string)$path_tail3; $url_with_v = addOrReplaceQueryVar($url, 'v', $ver); // 診断モードなら出力して終了 if ($diag) { echo "id(raw): {$id}\n"; echo "id(norm): {$id_norm}\n"; echo "wpidex: {$target['wpidex']}\n"; echo "column_M: {$column_M}\n"; echo "select_no: {$select_no}\n"; echo "url(base): {$url}\n"; echo "ext: {$ext}\n"; echo "json_path: {$json_path_used}\n"; echo "json_mtime: {$base_ver}\n"; echo "server_code: {$server_code}\n"; echo "path_tail3: {$path_tail3}\n"; echo "url_with_v: {$url_with_v}\n"; echo "OK\n"; exit; } // リダイレクト(302)※ここで Content-Type は送らない header("Location: ".$url_with_v, true, 302); exit; // ------------------------- helpers ------------------------- function loadFirstAvailableJson(array $paths) { foreach ($paths as $p) { $raw = @file_get_contents($p); if ($raw !== false && $raw !== '') return [$raw, $p]; } return [null, null]; } function generatePcloudUrl($original_url) { $prefix = "https://xxxxxxxx.com/wp-content/"; $pcloud_base = "https://filedn.eu/<あなたのpCloudトークン>/"; if (strpos($original_url, $prefix) === 0) { $relative_path = substr($original_url, strlen($prefix)); $parts = explode('/', $relative_path); $encoded_parts = array_map('rawurlencode', $parts); $encoded_path = implode('/', $encoded_parts); return $pcloud_base . $encoded_path; } return ''; } function addOrReplaceQueryVar($url, $key, $value) { $p = parse_url($url); $scheme = $p['scheme'] ?? ''; $host = $p['host'] ?? ''; $port = isset($p['port']) ? ':' . $p['port'] : ''; $path = $p['path'] ?? ''; $fragment = isset($p['fragment']) ? '#'.$p['fragment'] : ''; $query = []; if (!empty($p['query'])) parse_str($p['query'], $query); $query[$key] = $value; $qs = http_build_query($query); $auth = ''; if (isset($p['user'])) { $auth = $p['user']; if (isset($p['pass'])) $auth .= ':' . $p['pass']; $auth .= '@'; } return ($scheme ? $scheme.'://' : '') . $auth . $host . $port . $path . ($qs ? '?'.$qs : '') . $fragment; } // ============================================================================