في هذا الشرح سنتعرف على كيفية إزالة "m=1" من عناوين URL مدونتك على Blogger. تعتمد هذه الطريقة على استخدام Cloudflare Workers كوسيط لتعديل الاستجابة قبل وصولها إلى المتصفح. تُحدد خدمة Cloudflare Workers نوع الجهاز (هاتف محمول أو جهاز لوحي أو سطح مكتب) باستخدام وكيل المستخدم "User-Agent". وبناءً على ها النوع، يتمّ استرداد عنوان URL الأصلي مع معلمة "m" بقيمة محددة (0 للسطح المكتب و 1 للأجهزة الأخرى) ثم يتمّ إرساله إلى المتصفح. وبذلك، لن يُعاد توجيه المستخدمين إلى عنوان URL مع معلمة "m" عند زيارة الموقع على أجهزة محمولة.
تستدعي هذه العملية استخدام اسم نطاق مخصص موصول إلى Cloudflare Workers، مما يعني أنك تحتاج إلى دمج اسم نطاق مخصص مع Cloudflare. لذلك، لا يمكن تطبيق هذه الطريقة على نطاق فرعي .blogspot.
المتطلبات
قبل البدء، يجب أن تكون على دراية بحدود Cloudflare Workers المجانية. و التي تتمثل في 100 ألف طلب في اليوم إذا تجاوزت هذه الحدود، فلن يتمّ تطبيق الWorker وسيعمل الموقع على الشكل الإفتراضي.
إنشاء Cloudflare Workers
1.سجّل الدخول إلى حساب Cloudflare الخاص بك.
2.قم بالنزول في القائمة ثم انتقل إلى قسم Workers & Pages وانقر على إنشاء"Create".
3.ثم انقر على "Create Worker" .
4.قم بتسمية العامل باسم "remove-m-worker".
5.ثم قم بالنزول الى اسفل وانقر على نشر "Deploy".
6.الآن انقر على تحرير الكود "Edit code" واستبدل الكود الحالي بالكود التالي:
/**
* Environment interface
*
* @typedef Env
* @property {string} my_var
*/
/**
* A helper function to get the device type from user agent
*
* @param {string | null} userAgent
*
* @returns {"mobile" | "tablet" | "desktop"}
*/
const getDeviceType = (userAgent) => {
const mobileRegexp = /(?:phone|windows\s+phone|ipod|blackberry|(?:android|bb\d+|meego|silk|googlebot) .+? mobile|palm|windows\s+ce|opera\ mini|avantgo|mobilesafari|docomo|KAIOS)/i;
const tabletRegexp = /(?:ipad|playbook|(?:android|bb\d+|meego|silk)(?! .+? mobile))/i;
if (typeof userAgent === "string") {
if (mobileRegexp.test(userAgent)) {
return "mobile";
}
if (tabletRegexp.test(userAgent)) {
return "tablet";
}
}
// Everything else not matched above will be considered as desktop
return "desktop";
}
/**
* An object with workers handlers
*
* @type {ExportedHandler}
*/
const worker = {
async fetch(request, env, context) {
// Get the device type from user-agent header
const deviceType = getDeviceType(request.headers.get("User-Agent"));
const proxyUrl = new URL(request.url);
// Set the search param 'm' according to the device type, i.e. '0' for desktop, '1' for others
proxyUrl.searchParams.set("m", String(deviceType === "desktop" ? 0 : 1));
const proxyResponse = await fetch(proxyUrl, request);
const response = new Response(proxyResponse.body, proxyResponse);
// TODO: You can modify the response here :)
return response;
}
}
// Export handlers
export default worker;
7.بعد لصق الكود في المكان المخصص قم بعمل نشر
8.ثم حفظ ونشر"Save and deploy".
إنشاء مسارات
1.انتقل إلى قسم المواقع في لوحة تحكم Cloudflare وحدد نطاقك.
2.انتقل إلى قسم Workers Routes ثم انقر على إضافة مسار "Add route".
3.أدخل الحقول كما هو موضح في الجدول التالي:
www.yourdomain.com/* | Route |
---|---|
remove-m-worker | Worker |
Fail open (proceed) | Request limit failure mode |
بعد التأكد من أن الحقول معبأة بشكل صحيح قم بالنقر على حفظ.
بعد الحفظ سيتم تطبيق الWorker مباشرة على نطاقك الخاص. يمكنك اجراء فحص للنطاق من خلال موقع Redirect-Checker للتأكد من أنه لم يعد يحتوي على معلمة "m=1" و اعادة التوجيه 302
بهذه الطريقة، ستتمكن من التخلص من معلمة "m=1" من روابط مدونتك على Blogger بكل سهولة. إذا كنت تواجه صعوبات، فلا تتردد في ترك تعليق و سأحول مساعدتك بإذن الله.