أنشئ وسم canonical من عنوان HTTP صالح
يحوّل مولد وسم رابط canonical عنوان ويب مطلقًا إلى عنصر link بلغة HTML جاهز للوضع في قسم head من الصفحة. ويتحقق من إمكان تحليل العنوان ومن استخدامه HTTP أو HTTPS، ثم يؤمّن القيمة لاستعمالها داخل سمة HTML. تتضمن النتيجة عنوان canonical بعد توحيد صيغته والوسم الكامل، ولذلك تناسب التعديل اليدوي ومسار النشر ونظام القوالب وعمليات SEO المؤتمتة.
شغّل الأداة مجانًا
اختر عنوان URL الذي يمثل الصفحة المفضلة
يخبر وسم canonical محركات البحث بعنوان URL المطلق الذي تعدّه النسخة المفضلة من الصفحة. ابدأ بالعنوان الذي ينبغي أن يبقى المرجع الأساسي عندما يتاح المحتوى نفسه عبر معلمات التتبع أو مسارات تنقل بديلة أو نسخ الطباعة أو غيرها من الصفحات المكررة. أدرج المخطط واسم المضيف، لأن مسارًا نسبيًا مثل /guides/example لا يحدد صفحة واحدة بوضوح عبر المواقع المختلفة. اختر HTTP أو HTTPS صراحةً؛ وفي معظم بيئات الإنتاج يُستحسن استخدام عنوان HTTPS الذي يستطيع الزوار وبرامج الزحف فتحه. أبقِ المسارات ومعلمات الاستعلام والأجزاء ذات المعنى فقط عندما تكون جزءًا حقيقيًا من العنوان المفضل. يحلل هذا المولد القيمة ويسلسلها بصورة متسقة، لذلك قد تظهر بعض التفاصيل بصيغة موحدة. ولا يزور الصفحة أو يختبر عمليات إعادة التوجيه أو يقارن المحتوى المكرر أو يقرر أي نسخة تستحق أن تكون canonical. يبقى ذلك قرارًا تحريريًا لكم. قبل إنشاء الوسم، تأكدوا من أن الوجهة عامة ومستقرة وقابلة للفهرسة ومقصودة لتكون مرجعًا طويل الأمد للمحتوى.
أنشئ ترميزًا آمنًا لقسم head في المستند
أرسل العنوان المختار في حقل url. تزيل الأداة المسافات المحيطة، وتتحقق من أن القيمة عنوان URL مطلق، ولا تقبل إلا مخططي http وhttps. تُرفض العناوين التي تستخدم mailto أو ftp أو javascript أو file أو بروتوكول تطبيق مخصص، لأنها لا تصلح مراجع canonical تقليدية للويب. تحتوي النتيجة الناجحة على canonical_url الذي يعرض العنوان بعد التحليل القياسي، وعلى tag الذي يتضمن عنصر link كاملًا. وتُؤمّن قيمة href لتناسب سمة HTML محاطة بعلامتي اقتباس مزدوجتين، بما في ذلك علامات العطف داخل الاستعلامات، حتى لا تتحول محارف العنوان إلى صياغة HTML عن طريق الخطأ. ضعوا العنصر الناتج داخل head، وعادة مرة واحدة فقط في كل مستند. لا تضيفوا تصريح canonical ثانيًا متعارضًا، وتحققوا من أن ترويسة HTTP أو إضافة إطار العمل لا تنشر وجهة مختلفة. ينتج المولد وسم HTML موجزًا بلا شرطة إغلاق XML لأن link عنصر فارغ. وهو ينشئ الترميز فقط ولا يعدل أي صفحة ولا يتصل بأي خادم.
تحقق من النشر وحافظ على اتساق العناوين
بعد إضافة الوسم، افحصوا المصدر النهائي للصفحة أو استجابة الخادم الفعلية بدلًا من الاكتفاء بملف القالب. قد تستبدل أنظمة إدارة المحتوى وإضافات SEO والقوالب والبرمجيات الوسيطة عناصر head أو تكررها أو تحذفها بعد التعديل. تأكدوا من وجود رابط canonical مقصود واحد فقط ومن مطابقة href لعنوان URL العام الذي اخترتموه. ثم اختبروا الوجهة في بيئة النشر: ينبغي أن تستجيب بنجاح، وأن تتجنب سلسلة إعادة توجيه غير ضرورية، وألا تكون محجوبة عن الفهرسة إذا كان الظهور في البحث هو الهدف. طبقوا السياسة نفسها باتساق على ترقيم الصفحات والمجموعات المصفاة والصفحات المحلية ونسخ الهاتف وعناوين الحملات ذات المعلمات. وسوم canonical إشارات لتجميع الصفحات المتكافئة، وليست عمليات إعادة توجيه أو وسائل تحكم في الوصول؛ لذلك تظل كل نسخة قابلة للفتح. عند تغيير العنوان المفضل، أنشئوا الوسم من جديد وحدّثوا الروابط الداخلية وخرائط الموقع وعمليات إعادة التوجيه والبيانات المنظمة عند الحاجة. تبلغ كلفة API للأتمتة $0.002 لكل طلب، بينما تنتج نسخة المتصفح محليًا النتيجة الحتمية نفسها.
حالات الاستخدام
إعداد وسم لقالب نظام إدارة محتوى
حوّلوا عنوان المقال المفضل إلى ترميز مؤمّن يمكن وضعه في head أو في حقل بالقالب.
توحيد الوسوم في مسار النشر
أنشئوا عنوان canonical وعنصر link متسقين قبل تجميع الصفحات ونشرها.
معالجة العناوين ذات المعلمات بأمان
أنشئوا HTML صالحًا عندما يحتوي عنوان canonical على معلمات تتطلب تأمين علامات العطف في السمة.
الأسئلة الشائعة
ما نوع الإدخال الذي يقبله المولد؟
يقبل عنوان URL مطلقًا يتضمن مخطط http أو https واسم مضيف. ويرفض المسارات النسبية والبروتوكولات الأخرى.
هل تتحقق الأداة من وجود الصفحة؟
لا. تتحقق من الصياغة والبروتوكول بصورة حتمية من دون إرسال أي طلب شبكي.
لماذا تظهر علامات العطف بصيغة & في الوسم؟
يُؤمّن العنوان للاستخدام الآمن داخل سمة HTML. ويفسر المتصفح هذا الترميز علامة عطف في العنوان الفعلي.
أين ينبغي وضع الوسم الناتج؟
ضعوه داخل head وتجنبوا نشر وسم canonical آخر يشير إلى عنوان URL متعارض.
ما كلفة طلب API؟
تبلغ كلفة كل طلب API مقدار $0.002. ويتاح مولد المتصفح للاستخدامات الفردية.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/web/canonical-tag-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/articles/canonical-tags?edition=web"}'const res = await fetch("https://api.kit.forhosting.com/web/canonical-tag-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"url": "https://example.com/articles/canonical-tags?edition=web"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/canonical-tag-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"url": "https://example.com/articles/canonical-tags?edition=web"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/canonical-tag-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"url":"https://example.com/articles/canonical-tags?edition=web"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"url":"https://example.com/articles/canonical-tags?edition=web"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/canonical-tag-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"url": "https://example.com/articles/canonical-tags?edition=web"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.canonical_tag_generate",
"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 | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |