تقنية

قم بإنشاء ملف firebase.json لعمليات إعادة توجيه Firebase


لقد قمنا مؤخرًا بنقل دليل المستخدم لدمج المراسلات وإشعارات النماذج من موقع الويب labnol.org ل digitalinspiration.com. كما هو الحال مع أي نقل للنطاق، كان علينا إعداد عمليات إعادة التوجيه 301 يدويًا بحيث تتم إعادة توجيه الجمهور تلقائيًا إلى موقع الويب الجديد في حالة قيامهم بالنقر فوق أي من الروابط التي لا تزال تشير إلى النطاق القديم.

نظرًا لأن مواقع الويب مستضافة على Firebase، فمن السهل إعداد عمليات إعادة التوجيه 301 من خلال firebase.json ملف. كل ما نحتاجه هو إدخالات في redirects مصفوفة، إدخال واحد لكل عملية إعادة توجيه، مع تحديد المصدر وعنوان URL الوجهة ومن الممكن أيضًا تحديد ما إذا كانت إعادة التوجيه 301 (دائم) أو إعادة توجيه 302 مؤقتة.

{
  "redirects": [
    {
      "source": "/page1",
      "destination": "https://digitalinspiration.com/page1",
      "type": 301
    },
    {
      "source": "/page2{,/**}", // also redirect pages ending with slash
      "destination": "https://digitalinspiration.com/page2",
      "type": 302
    }
  ]
}

عندما تقوم بترحيل المواقع الكبيرة، قد يصبح من الصعب الحفاظ على firebase.json الملف كمئات من عناوين URL التي قد يلزم إضافتها في مصفوفة عمليات إعادة التوجيه. كحل بديل، يمكنك إنشاء ملف JSON منفصل بجميع عمليات إعادة التوجيه ثم إنشاء ملف firebase.json ملف ديناميكيا.

يتم إنشاء ملف firebase تلقائيًا من ملف عمليات إعادة التوجيه قبل تحميل الأصول إلى استضافة Firebase.

الخطوة 1: إنشاء ملف أساسي firebase.base.json. كما ترون، لدينا بالفعل عدد قليل من إعدادات عمليات إعادة التوجيه وسيتم دمج إدخالات إعادة التوجيه الجديدة في هذه المصفوفة.

{
  "hosting": {
    "public": "public",
    "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
    "redirects": [
      {
        "source": "/foo{,/**}",
        "destination": "/bar",
        "type": 301
      },
      {
        "source": "/firebase/**",
        "destination": "https://firebase.google.com/",
        "type": 302
      }
    ]
  }
}

الخطوة 2: إنشاء أ firebase.redirects.json ملف مع links الخاصية التي تحتوي على مجموعة من الروابط. سيكون لكل إدخال رابط نمط التعبير العادي أو الكرة الأرضية المصدر وعنوان URL الوصفي ونوع إعادة التوجيه (اختياري).

{
  "links": [
    [
      "/email-google-form-responses-7263",
      "https://digitalinspiration.com/docs/form-notifications/email-multiple-people"
    ],
    [
      "/embed-qrcode-barcode-google-forms-021020",
      "https://digitalinspiration.com/docs/form-notifications/barcode-qrcode"
    ],
    [
      "/internet/google-forms-mobile-notifications/29203",
      "https://digitalinspiration.com/docs/form-notifications/phone-push-notifications",
      false
    ]
  ]
}

الخطوة 3: إنشاء أ generate.js من شأنها قراءة الملف الأساسي وإنشاء ملف firebase.json الملف باستخدام عمليات إعادة التوجيه المدرجة في ملف redirects.json ملف. الجميع

const fs = require('fs');

const redirects = fs.readFileSync('firebase.redirects.json');
const { links = [] } = JSON.parse(redirects);

const linkMap = links.map((link) => {
  const [source, destination, permanent = true] = link;
  return {
    source: `${source}{,/**}`,
    destination,
    type: permanent ? 301 : 302,
  };
});

const firebase = fs.readFileSync('firebase.base.json');

const file = JSON.parse(firebase);

file.hosting.redirects = [...file.hosting.redirects, ...linkMap];

fs.writeFileSync('firebase.json', JSON.stringify(file, null, 2));

الخطوة 4: داخل package.json الملف، قم بإضافة إدخال جديد في script قسم لإنشاء الملف قبل خطوة التحميل.

{
  "scripts": {
    "generator": "node generate.js",
    "upload": "npm run generator && firebase deploy --only hosting"
  }
}

وهذا يضمن أن جديد firebase.json يتم إعادة إنشاء الملف قبل النشر.



Source link

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى