تحويل رابط نسبي إلى مطلق باستخدام رابط أساسي
حوّل رابطًا أو مسارًا أو استعلامًا أو جزءًا أو مرجعًا نسبيًا للبروتوكول إلى الرابط المطلق نفسه الذي سيستخدمه المتصفح.
شغّل الأداة مجانًا
أدخل رابطًا أساسيًا مطلقًا والمرجع الموجود في مستند أو موجز أو ورقة أنماط أو بيان تطبيق أو استجابة API. تطبق الأداة قواعد URL القياسية على مقاطع المسار والشرطة المائلة الأخيرة والاستعلامات والأجزاء والمنافذ وتغييرات المصدر، ثم تعيد رابطًا مطبعًا من دون طلب الوجهة أو فحص أي محتوى بعيد. العملية سريعة وحتمية النتيجة.
ابدأ بالرابط الكامل الذي يوفر السياق
لا يكتسب المرجع النسبي معنى إلا عند ربطه بعنوان URL آخر. أدخل هذا السياق في base_url كرابط مطلق كامل، بما في ذلك المخطط والمضيف عندما يتطلب المخطط مضيفًا. للمسار أهمية لا تقل عن النطاق. فمثلًا، عندما تكون نهاية الأساس <code>/docs/page.html</code> يعامل المرجع البسيط <code>image.png</code> كعنصر مجاور للصفحة، أما عندما تكون نهايته <code>/docs/</code> فيعامل كعنصر داخل ذلك الدليل. لا تحاول الأداة تخمين ما إذا كان المسار ملفًا أم مجلدًا، بل تتبع الصياغة وخصوصًا الشرطة المائلة الأخيرة. وهي تقبل صيغ الروابط المطلقة القياسية التي تفهمها آلية URL في المتصفح. لا تكفي قيمة مثل <code>/docs/page.html</code> كأساس لأنها لا تحتوي على مخطط مطلق ولا سياق للمصدر. تؤدي القواعد غير الصالحة أو النسبية إلى خطأ إدخال بدل إرجاع نتيجة تبدو معقولة. تكشف هذه الصرامة الأخطاء قبل انتقال الروابط الناتجة إلى زاحف أو مهمة استيراد أو قاعدة إعادة توجيه أو مجموعة بيانات محفوظة.
افهم كيف يغير كل نوع من المراجع الرابط الأساسي
يمكن أن يحتوي الحقل relative_reference على أكثر من اسم ملف بسيط. تستبدل الشرطة المائلة في البداية مسار الأساس مع الاحتفاظ بالمخطط والجهة الموثوقة. وتنشئ شرطتان مائلتان في البداية مرجع مسار شبكي يسمح بتغيير المضيف مع وراثة المخطط. تصعد المقاطع مثل <code>../</code> مستوى واحدًا، بينما يبقى <code>./</code> في المستوى الحالي، وتزيل عملية التطبيع مقاطع التنقل هذه من الرابط النهائي. يحافظ المرجع الذي تكون بدايته <code>?</code> على المسار ويستبدل الاستعلام. أما المرجع الذي تكون بدايته <code>#</code> فيحافظ على المسار والاستعلام ويغير الجزء. ويستبدل المرجع المطلق الأساس كاملًا كما تقتضي القواعد القياسية. ترفض هذه القدرة المراجع الفارغة حتى لا يلتبس الحقل المفقود سهوًا بإعادة استخدام الأساس عن قصد. تبقى المحارف المرمزة بالنسبة المئوية مرمزة وفق قواعد تسلسل URL، وقد تطبع أسماء المضيفين والمنافذ الافتراضية والمكونات الأخرى إلى الصيغة القانونية التي ينتجها المحلل القياسي.
استخدم النتيجة المتسلسلة من دون إجراء طلب شبكي
تحتوي النتيجة في absolute_url على الرابط المطبع والمتسلسل بعد الحل. لا تجري الأداة استعلام DNS أو طلب HTTP أو تنزيلًا أو تتبعًا لإعادة التوجيه أو اختبارًا للتوافر. يفيد هذا الفصل عندما تحتاج إلى تحويل حتمي لا إلى اختبار حي للموقع، إذ تعطي المدخلات نفسها النتيجة نفسها دائمًا حتى إذا لم يكن المضيف موجودًا أو كان المورد خاصًا. استخدم النتيجة لتطبيع الروابط المستخرجة من HTML، أو تجهيز قوائم الزحف، أو توسيع المراجع في الموجزات، أو التحقق من بيانات الاختبار، أو إنشاء مدخلات خريطة الموقع، أو مقارنة الروابط بصورة متسقة قبل إزالة التكرار. لا تثبت المعالجة النحوية أن الوجهة آمنة أو متاحة أو عامة أو مصرحًا بها. إذا قدم مستخدمون غير موثوقين القيم، فطبق سياسة تطبيقك المتعلقة بالمخططات والمضيفين والوصول إلى الشبكة قبل جلب الرابط الناتج. تستخدم API وأداة المتصفح الخوارزمية النقية نفسها، لذلك تتطابق نتائجهما. يكلف كل طلب API مبلغ $0.002؛ أما التنفيذ المحلي في هذه الصفحة فمجاني.
حالات الاستخدام
توسيع الروابط المستخرجة من صفحة
حوّل قيم href وsrc النسبية إلى روابط مطلقة باستخدام رابط المستند الذي وردت فيه.
تطبيع عناصر قائمة انتظار الزحف
حل مقاطع النقاط والمسارات النسبية للجذر والاستعلامات والأجزاء قبل الزحف أو إزالة التكرار.
اختبار التوجيه وبيانات URL
أنشئ روابط متوقعة وحتمية للاختبارات من دون الاتصال بالمضيفين أو الاعتماد على حالة الشبكة.
الأسئلة الشائعة
ما أثر الشرطة المائلة في نهاية الرابط الأساسي؟
تحدد ما إذا كان مقطع المسار الأخير دليلًا. من دونها يستبدل المسار النسبي البسيط ذلك المقطع، ومعها يضاف المسار داخل الدليل.
هل يمكن أن يكون المرجع النسبي رابطًا مطلقًا؟
نعم. تعيد قواعد الحل القياسية ذلك الرابط المطلق مستقلًا عن الأساس، مع تطبيق تسلسل URL المعتاد.
هل تتحقق الأداة من وجود الرابط الناتج؟
لا. لا تنفذ الأداة طلبات شبكية أو استعلامات DNS أو فحصًا لإعادة التوجيه أو اختبارًا للتوافر.
هل تدعم المراجع التي تحتوي على استعلام فقط أو جزء فقط؟
نعم. يستبدل المرجع الذي تكون بدايته ? الاستعلام، ويغير المرجع الذي تكون بدايته # الجزء وفق القواعد القياسية.
ماذا يحدث إذا كان الرابط الأساسي نسبيًا؟
يفشل الطلب بخطأ إدخال غير صالح لأن الأساس النسبي لا يوفر سياقًا كافيًا لإنتاج رابط مطلق.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/absolute-url-resolve \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"base_url":"https://example.com/docs/guides/start.html","relative_reference":"../images/logo.svg?theme=dark#mark"}'const res = await fetch("https://api.kit.forhosting.com/web/absolute-url-resolve", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"base_url": "https://example.com/docs/guides/start.html",
"relative_reference": "../images/logo.svg?theme=dark#mark"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/absolute-url-resolve",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"base_url": "https://example.com/docs/guides/start.html",
"relative_reference": "../images/logo.svg?theme=dark#mark"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/absolute-url-resolve", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"base_url":"https://example.com/docs/guides/start.html","relative_reference":"../images/logo.svg?theme=dark#mark"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"base_url":"https://example.com/docs/guides/start.html","relative_reference":"../images/logo.svg?theme=dark#mark"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/absolute-url-resolve", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"base_url": "https://example.com/docs/guides/start.html",
"relative_reference": "../images/logo.svg?theme=dark#mark"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.absolute_url_resolve",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
timeout_sec | 30 |
max_crawl_pages | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |