होस्टिंग व्यवहार को कॉन्फ़िगर करें

Firebase Hosting की मदद से, अपनी साइट पर किए गए अनुरोधों के लिए, होस्टिंग के व्यवहार को पसंद के मुताबिक कॉन्फ़िगर किया जा सकता है.

Hosting के लिए क्या कॉन्फ़िगर किया जा सकता है?

  • बताएं कि आपको अपनी लोकल प्रोजेक्ट डायरेक्ट्री में किन फ़ाइलों को डिप्लॉय करना है Firebase Hosting. इसका तरीका जानें.

  • अपनी पसंद के मुताबिक बनाया गया 404/Not Found पेज दिखाएं. इसका तरीका जानें.

  • जिन पेजों को आपने माइग्रेट किया है या मिटा दिया है उनके लिए, redirects सेट अप करें. इसका तरीका जानें.

  • इनमें से किसी भी मकसद के लिए rewrites सेट अप करें:

  • किसी अनुरोध के बारे में ज़्यादा जानकारी देने के लिए headers जोड़ें या रिस्पॉन्स, जैसे कि ब्राउज़र को पेज और उसके कॉन्टेंट को किस तरह हैंडल करना चाहिए (पुष्टि करना, कैश मेमोरी, कोड में बदलने का तरीका वगैरह). इसका तरीका जानें.

  • कॉन्टेंट के हिसाब से खास कॉन्टेंट दिखाने के लिए, इंटरनैशनलाइज़ेशन (i18n) रीराइट सेट अप करना उपयोगकर्ता की भाषा प्राथमिकता और/या देश पर. इसका तरीका जानें (दूसरा पेज).

Hosting का कॉन्फ़िगरेशन कहां तय किया जाता है?

आप इसमें अपना Firebase Hosting कॉन्फ़िगरेशन तय करते हैं firebase.json फ़ाइल. Firebase आपके प्रोजेक्ट के रूट पर, आपकी firebase.json फ़ाइल अपने-आप बनाता है डायरेक्ट्री को तब इस्तेमाल किया जाता है, जब firebase init निर्देश.

आप firebase.json कॉन्फ़िगरेशन का पूरा उदाहरण (सिर्फ़ Firebase Hosting को कवर करती है). ध्यान दें कि firebase.json फ़ाइल में ये चीज़ें भी शामिल हो सकती हैं अन्य Firebase सेवाओं के लिए कॉन्फ़िगरेशन.

डिप्लॉय किए गए firebase.json कॉन्टेंट को देखने के लिए, इनका इस्तेमाल करें: Hosting REST API.

Hosting जवाबों का प्राथमिकता क्रम

इस पेज पर बताए गए Firebase Hosting कॉन्फ़िगरेशन के अलग-अलग विकल्प, कभी-कभी ओवरलैप हो सकते हैं. अगर कोई विरोध होता है, तो Hosting प्राथमिकता के इस क्रम का इस्तेमाल करके जवाब तय करता है:

  1. रिज़र्व किए गए ऐसे नेमस्पेस जो /__/* पाथ सेगमेंट से शुरू होते हैं
  2. कॉन्फ़िगर किए गए रीडायरेक्ट
  3. एग्ज़ैक्ट मैच वाला स्टैटिक कॉन्टेंट
  4. फिर से लिखने के लिए कॉन्फ़िगर किया गया
  5. कस्टम 404 पेज
  6. डिफ़ॉल्ट 404 पेज

अगर i18n रीराइट का इस्तेमाल किया जा रहा है, तो पूरी तरह मेल खाने वाली वैल्यू और 404 हैंडलिंग प्राथमिकता क्रम को आपके "i18n" के दायरे में बढ़ाया गया है कॉन्टेंट".

यह तय करना कि कौनसी फ़ाइलें डिप्लॉय करनी हैं

public और ignore डिफ़ॉल्ट एट्रिब्यूट शामिल किए गए हैं डिफ़ॉल्ट firebase.json फ़ाइल में सेट करती है कि आपकी प्रोजेक्ट निर्देशिका में कौन-सी फ़ाइलें हैं को आपके Firebase प्रोजेक्ट में डिप्लॉय किया जाना चाहिए.

firebase.json फ़ाइल में डिफ़ॉल्ट hosting कॉन्फ़िगरेशन इस तरह दिखता है:

"hosting": {
  "public": "public",  // the only required attribute for Hosting
  "ignore": [
    "firebase.json",
    "**/.*",
    "**/node_modules/**"
  ]
}

सार्वजनिक

ज़रूरी है
public एट्रिब्यूट से यह पता चलता है कि किस डायरेक्ट्री में डिप्लॉय करना हैFirebase Hosting. डिफ़ॉल्ट वैल्यू, public नाम की डायरेक्ट्री होती है, लेकिन किसी भी डायरेक्ट्री का पाथ तब ही बता सकता है, जब वह आपके प्रोजेक्ट में मौजूद हो डायरेक्ट्री.

डिफ़ॉल्ट तौर पर, किसी डायरेक्ट्री का डिप्लॉयमेंट के लिए इसका नाम इस तरह दिया जाता है:

"hosting": {
  "public": "public"

  // ...
}

डिफ़ॉल्ट वैल्यू को बदलकर उस डायरेक्ट्री को सेट किया जा सकता है जिसे आपको डिप्लॉय करना है:

"hosting": {
  "public": "dist/app"

  // ...
}

नज़रअंदाज़ करें

ज़रूरी नहीं है
ignore एट्रिब्यूट उन फ़ाइलों के बारे में बताता है जिन्हें डिप्लॉय नहीं करना है. यह लग सकता है ग्लब को उसी तरह से इस्तेमाल करते हैं Git, .gitignore को हैंडल करता है.

फ़ाइलों को अनदेखा करने के लिए डिफ़ॉल्ट वैल्यू ये हैं:

"hosting": {
  // ...

  "ignore": [
    "firebase.json",  // the Firebase configuration file (the file described on this page)
    "**/.*",  // files with a leading period should be hidden from the system
    "**/node_modules/**"  // contains dependencies used to create your site but not run it
  ]
}

404/नहीं मिला पेज को पसंद के मुताबिक बनाना

ज़रूरी नहीं है
जब कोई उपयोगकर्ता किसी पेज को ऐक्सेस करने की कोशिश करता है, तब कस्टम 404 Not Found गड़बड़ी का मैसेज दिख सकता है जो मौजूद नहीं है.

अपने प्रोजेक्ट की public डायरेक्ट्री में एक नई फ़ाइल बनाएं, इसे नाम दें 404.html. इसके बाद, फ़ाइल में अपना कस्टम 404 Not Found कॉन्टेंट जोड़ें.

Firebase Hosting, इस कस्टम 404.html पेज का कॉन्टेंट तब दिखाएगा, जब किसी ब्राउज़र से आपके डोमेन या सबडोमेन पर 404 Not Found गड़बड़ी ट्रिगर होती है.

रीडायरेक्ट कॉन्फ़िगर करना

ज़रूरी नहीं है
अगर आपने किसी पेज को दूसरी जगह पर ले जाया है, तो काम न करने वाले लिंक को रोकने के लिए, यूआरएल रीडायरेक्ट का इस्तेमाल करें या यूआरएल को छोटा करने के लिए किया जा सकता है. उदाहरण के लिए, आप ब्राउज़र को यहां से रीडायरेक्ट कर सकते हैं: example.com/team से example.com/about.html के लिए.

redirects एट्रिब्यूट बनाकर, यूआरएल रीडायरेक्ट के बारे में बताएं, जिसमें कलेक्शन मौजूद हो ऑब्जेक्ट (जिन्हें "रीडायरेक्ट नियम" कहा जाता है) के. हर नियम में, एक ऐसा यूआरएल पैटर्न डालें जो अनुरोध वाले यूआरएल पाथ से मैच करता हो. इससे, Hosting को ट्रिगर किया जाता है, ताकि वह तय किए गए डेस्टिनेशन यूआरएल पर रीडायरेक्ट करके जवाब दे सके.

redirects एट्रिब्यूट का बेसिक स्ट्रक्चर यहां बताया गया है. यह उदाहरण रीडायरेक्ट करता है /bar पर नया अनुरोध करके /foo को किए गए अनुरोध.

"hosting": {
  // ...

  // Returns a permanent redirect to "/bar" for requests to "/foo" (but not "/foo/**")
  "redirects": [ {
    "source": "/foo",
    "destination": "/bar",
    "type": 301
  } ]
}

redirects एट्रिब्यूट में, रीडायरेक्ट करने के नियमों की एक कैटगरी होती है, जिसमें हर नियम को नीचे दी गई टेबल में फ़ील्ड शामिल करना ज़रूरी है.

Firebase Hosting सभी यूआरएल से source या regex वैल्यू की तुलना करता है हर अनुरोध के प्रारंभ में पथ (ब्राउज़र यह तय करता है कि फ़ाइल या फ़ोल्डर उस पाथ पर मौजूद है). अगर कोई मिलान पाया जाता है, तो Firebase Hosting का ऑरिजिन सर्वर, एक एचटीटीपीएस रीडायरेक्ट रिस्पॉन्स भेजता है. इसमें यह बताया जाता है कि ब्राउज़र को destination यूआरएल पर नया अनुरोध करने के लिए कहें.

फ़ील्ड ब्यौरा
redirects
source (सुझाया गया)
या regex

ऐसा यूआरएल पैटर्न जो शुरुआती अनुरोध यूआरएल से मैच होने पर, रीडायरेक्ट लागू करने के लिए Hosting को ट्रिगर करता है

destination

स्टैटिक यूआरएल, जहां ब्राउज़र को नया अनुरोध करना चाहिए

यह यूआरएल कोई मिलता-जुलता या ऐब्सलूट पाथ हो सकता है.

type

एचटीटीपीएस रिस्पॉन्स कोड

  • 'स्थानांतरित हो गया' के लिए, 301 टाइप का इस्तेमाल करें
  • 'मिल गया' के लिए 302 के टाइप का इस्तेमाल करें (अस्थायी रीडायरेक्ट)

रीडायरेक्ट के लिए यूआरएल सेगमेंट कैप्चर करें

ज़रूरी नहीं है
कभी-कभी, आपको रीडायरेक्ट नियम के यूआरएल के खास सेगमेंट कैप्चर करने पड़ सकते हैं पैटर्न (source या regex वैल्यू) का इस्तेमाल करता है, तो इस सेगमेंट में इन सेगमेंट का फिर से इस्तेमाल करें: नियम का destination पथ.

पुनर्लेखन कॉन्फ़िगर करें

ज़रूरी नहीं है
एक से ज़्यादा यूआरएल के लिए एक जैसा कॉन्टेंट दिखाने के लिए, उसे फिर से लिखने की सुविधा का इस्तेमाल करें. पुनर्लेखन होते हैं पैटर्न मिलान के साथ विशेष रूप से उपयोगी हो जाता है, क्योंकि आप ऐसे कोई भी URL स्वीकार कर सकते हैं पैटर्न से मैच करता है और क्लाइंट-साइड कोड को यह तय करने देता है कि क्या दिखाना है.

जवाब को फिर से लिखने के विकल्प का इस्तेमाल, उन ऐप्लिकेशन की मदद के लिए भी किया जा सकता है जो HTML5 pushState नेविगेशन के लिए. जब कोई ब्राउज़र, तय किए गए source या regex यूआरएल पैटर्न से मैच करने वाला यूआरएल पाथ खोलने की कोशिश करता है, तो ब्राउज़र को destination यूआरएल पर मौजूद फ़ाइल का कॉन्टेंट दिखेगा.

यूआरएल रीराइट करने के लिए, rewrites एट्रिब्यूट बनाएं. इसमें ऑब्जेक्ट का कलेक्शन होता है, जिसे "रीराइट नियम" कहा जाता है. हर नियम में, ऐसा यूआरएल पैटर्न तय करें जो अगर अनुरोध यूआरएल पाथ से मेल खाता है, तो Hosting को इस तरह से ट्रिगर करता है: सेवा को निर्दिष्ट गंतव्य URL दिया गया था.

rewrites एट्रिब्यूट का बेसिक स्ट्रक्चर यहां बताया गया है. यह उदाहरण काम करता है ऐसी फ़ाइलों या डायरेक्ट्री के लिए अनुरोध करने के लिए index.html जो मौजूद नहीं हैं.

"hosting": {
  // ...

  // Serves index.html for requests to files or directories that do not exist
  "rewrites": [ {
    "source": "**",
    "destination": "/index.html"
  } ]
}

rewrites एट्रिब्यूट में रीराइट नियमों की एक कैटगरी होती है, जहां हर नियम को नीचे दी गई टेबल में फ़ील्ड शामिल करना ज़रूरी है.

Firebase Hosting किसी फ़ाइल या डायरेक्ट्री को फिर से लिखने का नियम सिर्फ़ तब लागू करता है, जब कोई फ़ाइल या डायरेक्ट्री जो बताए गए source या regex यूआरएल पैटर्न से मेल खाने वाले यूआरएल पाथ पर मौजूद हो. जब कोई अनुरोध किसी पुनर्लेखन नियम को ट्रिगर करता है, तो ब्राउज़र वास्तविक सामग्री वापस करता है destination फ़ाइल का इस्तेमाल करें, न कि एचटीटीपी रीडायरेक्ट.

फ़ील्ड ब्यौरा
rewrites
source (सुझाया गया)
या regex

शुरुआती अनुरोध के यूआरएल से मेल खाने वाला यूआरएल पैटर्न, ट्रिगर होता है फिर से लिखने के लिए Hosting

destination

एक लोकल फ़ाइल, जो मौजूद होनी चाहिए

यह यूआरएल कोई मिलता-जुलता या ऐब्सलूट पाथ हो सकता है.

किसी फ़ंक्शन के लिए अनुरोध करना

Firebase Hosting यूआरएल से फ़ंक्शन दिखाने के लिए, rewrites का इस्तेमाल किया जा सकता है. कॉन्टेंट बनाने नीचे दिया गया उदाहरण Cloud Functions का इस्तेमाल करके लगातार अपडेट होने वाली जानकारी दिखाना.

उदाहरण के लिए, /bigben पेज से सभी अनुरोधों को अपने bigben फ़ंक्शन को एक्ज़ीक्यूट करने के लिए Hosting साइट:

"hosting": {
  // ...

  // Directs all requests from the page `/bigben` to execute the `bigben` function
  "rewrites": [ {
    "source": "/bigben",
    "function": {
      "functionId": "bigben",
      "region": "us-central1"  // optional (see note below)
      "pinTag": true           // optional (see note below)
    }
  } ]
}

रीराइट नियम को जोड़ने और उसे Firebase में डिप्लॉय करने के बाद (इसका इस्तेमाल करके firebase deploy), तो आपके फ़ंक्शन तक इन यूआरएल से पहुंचा जा सकता है:

  • आपके Firebase सबडोमेन:
    PROJECT_ID.web.app/bigben और PROJECT_ID.firebaseapp.com/bigben

  • कनेक्ट किए गए सभी कस्टम डोमेन:
    CUSTOM_DOMAIN/bigben

Hosting वाले फ़ंक्शन पर अनुरोधों को रीडायरेक्ट करते समय, काम करने वाला एचटीटीपी अनुरोध तरीके GET, POST, HEAD, PUT, DELETE, PATCH, और OPTIONS हैं. REPORT या PROFIND जैसे दूसरे तरीके काम नहीं करते.

Cloud Run कंटेनर के लिए किए गए सीधे अनुरोध

आप rewrites का इस्तेमाल करकेCloud Run Firebase Hosting यूआरएल. यहां दिया गया उदाहरण, Cloud Run का इस्तेमाल करके डाइनैमिक कॉन्टेंट दिखाने के बारे में जानकारी का एक हिस्सा है.

उदाहरण के लिए, /helloworld पेज से सभी अनुरोधों को अपने helloworld कंटेनर को शुरू करने और चलाने को ट्रिगर करने के लिए Hosting साइट उदाहरण:

"hosting": {
 // ...

 // Directs all requests from the page `/helloworld` to trigger and run a `helloworld` container
 "rewrites": [ {
   "source": "/helloworld",
   "run": {
     "serviceId": "helloworld",  // "service name" (from when you deployed the container image)
     "region": "us-central1"  // optional (if omitted, default is us-central1)
   }
 } ]
}

रीराइट नियम को जोड़ने और उसे Firebase में डिप्लॉय करने के बाद (इसका इस्तेमाल करके firebase deploy), तो आपकी कंटेनर इमेज तक इन यूआरएल के ज़रिए पहुंचा जा सकता है:

  • आपके Firebase सबडोमेन:
    PROJECT_ID.web.app/helloworld और PROJECT_ID.firebaseapp.com/helloworld

  • कनेक्ट किए गए सभी कस्टम डोमेन:
    CUSTOM_DOMAIN/helloworld

Hosting वाले Cloud Run कंटेनर पर अनुरोधों को रीडायरेक्ट करते समय, काम करने वाले एचटीटीपी अनुरोध के तरीके GET, POST, HEAD, PUT, DELETE हैं, PATCH और OPTIONS. REPORT या PROFIND जैसे दूसरे तरीके समर्थित हैं.

सबसे अच्छी परफ़ॉर्मेंस के लिए, Cloud Run की सेवा को Hosting के साथ सेट करें. इसके लिए, इन क्षेत्रों का इस्तेमाल करें:

  • us-west1
  • us-central1
  • us-east1
  • europe-west1
  • asia-east1

Hosting के Cloud Run में लिखे गए टेक्स्ट को इस तरह से लिखा गया है: इन इलाकों में:

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-south2
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • australia-southeast2
  • europe-central2
  • europe-north1
  • europe-southwest1
  • europe-west1
  • europe-west12
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • europe-west8
  • europe-west9
  • me-central1
  • me-west1
  • northamerica-northeast1
  • northamerica-northeast2
  • southamerica-east1
  • southamerica-west1
  • us-central1
  • us-east1
  • us-east4
  • us-east5
  • us-south1
  • us-west1
  • us-west2
  • us-west3
  • us-west4
  • us-west1
  • us-central1
  • us-east1
  • europe-west1
  • asia-east1

कस्टम डोमेन Dynamic Links बनाने के लिए, rewrites का इस्तेमाल किया जा सकता है. Dynamic Links पर जाएं दस्तावेज़, जिसमें Dynamic Links के लिए कस्टम डोमेन सेट अप करना.

  • Dynamic Links के लिए सिर्फ़ अपने कस्टम डोमेन का इस्तेमाल करें

    "hosting": {
      // ...
    
      "appAssociation": "AUTO",  // required for Dynamic Links (default is AUTO if not specified)
    
      // Add the "rewrites" attribute within "hosting"
      "rewrites": [ {
        "source": "/**",  // the Dynamic Links start with "https://CUSTOM_DOMAIN/"
        "dynamicLinks": true
      } ]
    }
  • Dynamic Links में इस्तेमाल करने के लिए, कस्टम डोमेन पाथ के प्रीफ़िक्स डालें

    "hosting": {
      // ...
    
      "appAssociation": "AUTO",  // required for Dynamic Links (default is AUTO if not specified)
    
      // Add the "rewrites" attribute within "hosting"
      "rewrites": [ {
        "source": "/promos/**",  // the Dynamic Links start with "https://CUSTOM_DOMAIN/promos/"
        "dynamicLinks": true
      }, {
        "source": "/links/share/**",  // the Dynamic Links start with "https://CUSTOM_DOMAIN/links/share/"
        "dynamicLinks": true
      } ]
    }

अपनी firebase.json फ़ाइल में Dynamic Links को कॉन्फ़िगर करने के लिए ये चीज़ें ज़रूरी हैं:

फ़ील्ड ब्यौरा
appAssociation

AUTO पर सेट होना चाहिए

  • अगर इस एट्रिब्यूट को अपने कॉन्फ़िगरेशन में शामिल नहीं किया जाता है, तो appAssociation की डिफ़ॉल्ट वैल्यू AUTO है.
  • इस एट्रिब्यूट को AUTO पर सेट करके, Hosting ये काम कर सकता है डायनैमिक तौर पर assetlinks.json और जनरेट करें apple-app-site-association फ़ाइलें कब उनका अनुरोध किया गया हो.
rewrites
source

वह पाथ जिसका इस्तेमाल आपको Dynamic Links के लिए करना है

यूआरएल के पाथ को फिर से लिखने वाले नियमों के उलट, Dynamic Links के लिए फिर से लिखने वाले नियमों में रेगुलर एक्सप्रेशन शामिल नहीं किए जा सकते.

dynamicLinks true पर सेट होना चाहिए

हेडर कॉन्फ़िगर करें

ज़रूरी नहीं है
हेडर की मदद से, क्लाइंट और सर्वर ज़्यादा जानकारी भेज सकते हैं अनुरोध या जवाब भेज सकते हैं. हेडर के कुछ सेट, ब्राउज़र के काम करने के तरीके पर असर डाल सकते हैं यह पेज और उसके कॉन्टेंट को मैनेज करता है. इसमें ऐक्सेस कंट्रोल, पुष्टि करना, कैश मेमोरी में सेव करने और कोड में बदलने का तरीका.

headers एट्रिब्यूट बनाकर, पसंद के मुताबिक फ़ाइल के हिसाब से रिस्पॉन्स हेडर तय करें इसमें हेडर ऑब्जेक्ट का कलेक्शन मौजूद होता है. हर ऑब्जेक्ट में, यूआरएल पैटर्न तय करें वह, अनुरोध यूआरएल पाथ से मेल खाने पर, यूआरएल पाथ लागू करने के लिए Hosting को ट्रिगर करती है तय कस्टम रिस्पॉन्स हेडर.

यहां headers एट्रिब्यूट का बुनियादी स्ट्रक्चर दिया गया है. यह उदाहरण लागू होता है सभी फ़ॉन्ट फ़ाइलों के लिए सीओआरएस हेडर.

"hosting": {
  // ...

  // Applies a CORS header for all font files
  "headers": [ {
    "source": "**/*.@(eot|otf|ttf|ttc|woff|font.css)",
    "headers": [ {
      "key": "Access-Control-Allow-Origin",
      "value": "*"
    } ]
  } ]
}

headers एट्रिब्यूट में परिभाषाओं का कलेक्शन होता है, जिसमें हर परिभाषा को नीचे दी गई टेबल में फ़ील्ड शामिल करना ज़रूरी है.

फ़ील्ड ब्यौरा
headers
source (सुझाया गया)
या regex

शुरुआती अनुरोध के यूआरएल से मेल खाने वाला यूआरएल पैटर्न, ट्रिगर होता है कस्टम हेडर लागू करने के लिए Hosting

अपने कस्टम 404 पेज, 404.html का इस्तेमाल अपने source या regex वैल्यू.

(sub-)headers का कलेक्शन

कस्टम हेडर, जो Hosting अनुरोध पाथ पर लागू होते हैं

हर सब-हेडर में key और value जोड़ी (अगली दो पंक्तियां देखें).

key हेडर का नाम, उदाहरण के लिए Cache-Control
value हेडर के लिए वैल्यू, जैसे कि max-age=7200

Cache-Control के बारे में ज़्यादा जानने के लिए, यहां जाएं: Hosting सेक्शन, जिसमें डाइनैमिक कॉन्टेंट दिखाने और होस्टिंग की जानकारी दी गई है माइक्रोसर्विस. इसके बारे में ज़्यादा जानने के लिए, सीओआरएस हेडर.

.html एक्सटेंशन को कंट्रोल करें

ज़रूरी नहीं
cleanUrls एट्रिब्यूट की मदद से, यह कंट्रोल किया जा सकता है कि यूआरएल में .html एक्सटेंशन शामिल करना है या नहीं.

true पर, Hosting .html एक्सटेंशन को अपलोड किए गए एक्सटेंशन से अपने-आप हटा देता है यूआरएल फ़ाइल के यूआरएल मौजूद हैं. अगर अनुरोध में .html एक्सटेंशन जोड़ा जाता है, तो Hosting 301 उसी पाथ पर रीडायरेक्ट करता है, लेकिन .html एक्सटेंशन को हटा देता है.

यूआरएल में .html को शामिल करने के कंट्रोल को कंट्रोल करने का तरीका यहां बताया गया है cleanUrls एट्रिब्यूट:

"hosting": {
  // ...

  // Drops `.html` from uploaded URLs
  "cleanUrls": true
}

ट्रेलिंग स्लैश को कंट्रोल करना

ज़रूरी नहीं है
trailingSlash एट्रिब्यूट की मदद से यह कंट्रोल किया जा सकता है कि स्टैटिक है या नहीं कॉन्टेंट के यूआरएल में आखिर में स्लैश होने चाहिए.

  • जब true, Hosting यूआरएल को रीडायरेक्ट करता है, तो आखिर में स्लैश जोड़ता है.
  • जब false, Hosting पीछे के स्लैश को हटाने के लिए यूआरएल को रीडायरेक्ट करता है.
  • अगर कोई वैल्यू नहीं दी जाती है, तो Hosting सिर्फ़ डायरेक्ट्री इंडेक्स फ़ाइलों के लिए आखिर में स्लैश का इस्तेमाल करता है (उदाहरण के लिए, about/index.html).

यहां trailingSlash एट्रिब्यूट जोड़कर, ट्रेलिंग स्लैश को कंट्रोल करने का तरीका बताया गया है:

"hosting": {
  // ...

  // Removes trailing slashes from URLs
  "trailingSlash": false
}

trailingSlash एट्रिब्यूट से, Cloud Functions या Cloud Run से दिखाए गए डाइनैमिक कॉन्टेंट को फिर से लिखने पर कोई असर नहीं पड़ता.

ग्लोब पैटर्न मैचिंग

Firebase Hosting कॉन्फ़िगरेशन के विकल्प, extglob के साथ ग्लोब पैटर्न मैचिंग नोटेशन का ज़्यादा से ज़्यादा इस्तेमाल करते हैं. यह ठीक वैसा ही है जैसे Git, gitignore नियमों को मैनेज करता है और Bower, ignore नियमों को मैनेज करता है. यह विकी पेज ज़्यादा जानकारी के लिए है, लेकिन इस पेज पर इस्तेमाल किए गए उदाहरणों की पूरी जानकारी नीचे दी गई है:

  • firebase.json — रूट में मौजूद सिर्फ़ firebase.json फ़ाइल से मेल खाता है public डायरेक्ट्री में से

  • ** — आर्बिट्रेरी सब-डायरेक्ट्री में मौजूद किसी भी फ़ाइल या फ़ोल्डर से मेल खाता है

  • * — सिर्फ़ रूट में मौजूद फ़ाइलों और फ़ोल्डर से मेल खाता है public डायरेक्ट्री

  • **/.*. से शुरू होने वाली किसी भी फ़ाइल से मेल खाता है (आम तौर पर, छिपी हुई फ़ाइलें, जैसे कि .git फ़ोल्डर में) किसी आर्बिट्रेरी सब-डायरेक्ट्री में

  • **/node_modules/**node_modules फ़ोल्डर की किसी भी सब-डायरेक्ट्री में मौजूद किसी भी फ़ाइल या फ़ोल्डर से मेल खाता है. यह सब-डायरेक्ट्री, public डायरेक्ट्री की किसी भी सब-डायरेक्ट्री में हो सकती है

  • **/*.@(jpg|jpeg|gif|png) — किसी भी फ़ाइल को आर्बिट्रेरी तरीके से मैच करता है वह सब-डायरेक्ट्री जो इनमें से किसी एक से खत्म होती है: .jpg, .jpeg, .gif या .png

Hosting कॉन्फ़िगरेशन का पूरा उदाहरण

यहां firebase.json के लिए कॉन्फ़िगरेशन का पूरा उदाहरण दिया गया है Firebase Hosting. ध्यान दें कि firebase.json फ़ाइल में यह भी हो सकता है अन्य Firebase सेवाओं के लिए कॉन्फ़िगरेशन.

{
  "hosting": {

    "public": "dist/app",  // "public" is the only required attribute for Hosting

    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],

    "redirects": [ {
      "source": "/foo",
      "destination": "/bar",
      "type": 301
    }, {
      "source": "/firebase/**",
      "destination": "https://www.firebase.com",
      "type": 302
    } ],

    "rewrites": [ {
      // Shows the same content for multiple URLs
      "source": "/app/**",
      "destination": "/app/index.html"
    }, {
      // Configures a custom domain for Dynamic Links
      "source": "/promos/**",
      "dynamicLinks": true
    }, {
      // Directs a request to Cloud Functions
      "source": "/bigben",
      "function": "bigben"
    }, {
      // Directs a request to a Cloud Run containerized app
      "source": "/helloworld",
      "run": {
        "serviceId": "helloworld",
        "region": "us-central1"
      }
    } ],

    "headers": [ {
      "source": "**/*.@(eot|otf|ttf|ttc|woff|font.css)",
      "headers": [ {
        "key": "Access-Control-Allow-Origin",
        "value": "*"
      } ]
    }, {
      "source": "**/*.@(jpg|jpeg|gif|png)",
      "headers": [ {
        "key": "Cache-Control",
        "value": "max-age=7200"
      } ]
    }, {
      "source": "404.html",
      "headers": [ {
        "key": "Cache-Control",
        "value": "max-age=300"
      } ]
    } ],

    "cleanUrls": true,

    "trailingSlash": false,

    // Required to configure custom domains for Dynamic Links
    "appAssociation": "AUTO",

  }
}