Firebase Hosting की मदद से, अपनी साइट पर किए गए अनुरोधों के लिए, होस्टिंग के व्यवहार को अपनी पसंद के मुताबिक कॉन्फ़िगर किया जा सकता है.
Hosting के लिए क्या कॉन्फ़िगर किया जा सकता है?
बताएं कि आपको अपने लोकल प्रोजेक्ट डायरेक्ट्री की किन फ़ाइलों को Firebase Hosting पर डिप्लॉय करना है. इसका तरीका जानें.
पसंद के मुताबिक बनाया गया 404/पेज नहीं मिला वाला पेज दिखाएं. इसका तरीका जानें.
जिन पेजों को आपने मिटा दिया है या दूसरी जगह ले जाया है उनके लिए
redirects
सेट अप करें. इसका तरीका जानें.इनमें से किसी भी काम के लिए
rewrites
सेट अप करें:एक से ज़्यादा यूआरएल के लिए एक जैसा कॉन्टेंट दिखाएं. इसका तरीका जानें.
किसी फ़ंक्शन को दिखाना या किसी Cloud Run कंटेनर को Hosting यूआरएल से ऐक्सेस करना. इसके बारे में जानें: फ़ंक्शन या कंटेनर.
कस्टम डोमेन बनाएं Dynamic Link. इसका तरीका जानें.
अनुरोध या जवाब के बारे में अतिरिक्त जानकारी देने के लिए,
headers
जोड़ें. जैसे, ब्राउज़र को पेज और उसके कॉन्टेंट को कैसे हैंडल करना चाहिए (पहचान की पुष्टि, कैश मेमोरी में सेव करना, एन्कोडिंग वगैरह). इसका तरीका जानें.उपयोगकर्ता की भाषा की प्राथमिकता और/या देश के आधार पर, खास कॉन्टेंट दिखाने के लिए, अंतरराष्ट्रीयकरण (i18n) की फिर से लिखने की सुविधा सेट अप करें. इसका तरीका जानें (दूसरे पेज पर).
Hosting कॉन्फ़िगरेशन कहां तय किया जाता है?
Firebase Hosting कॉन्फ़िगरेशन को firebase.json
फ़ाइल में तय किया जाता है. firebase init
कमांड चलाने पर, Firebase आपके प्रोजेक्ट डायरेक्ट्री के रूट में firebase.json
फ़ाइल अपने-आप बना देता है.
इस पेज पर सबसे नीचे, आपको firebase.json
के पूरे कॉन्फ़िगरेशन का उदाहरण मिलेगा. इसमें सिर्फ़ Firebase Hosting को शामिल किया गया है. ध्यान दें कि firebase.json
फ़ाइल में, Firebase की अन्य सेवाओं के लिए कॉन्फ़िगरेशन भी शामिल हो सकते हैं.
Hosting REST API का इस्तेमाल करके, डिप्लॉय किए गए firebase.json
कॉन्टेंट की जांच की जा सकती है.
Hosting जवाबों का प्राथमिकता क्रम
इस पेज पर बताए गए अलग-अलग Firebase Hosting कॉन्फ़िगरेशन के विकल्प कभी-कभी एक-दूसरे से मिलते-जुलते हो सकते हैं. अगर कोई टकराव होता है, तो Hosting इस क्रम में जवाब देता है:
/__/*
पाथ सेगमेंट से शुरू होने वाले रिज़र्व किए गए नेमस्पेस- कॉन्फ़िगर किए गए रीडायरेक्ट
- पूरी तरह मेल खाने वाला स्टैटिक कॉन्टेंट
- कॉन्फ़िगर किए गए रीराइट
- कस्टम 404 पेज
- डिफ़ॉल्ट 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
ज़रूरी नहीं
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
कॉन्टेंट जोड़ें.
अगर कोई ब्राउज़र आपके डोमेन या सबडोमेन पर 404 Not Found
गड़बड़ी ट्रिगर करता है, तो Firebase Hosting इस कस्टम 404.html
पेज का कॉन्टेंट दिखाएगा.
रीडायरेक्ट कॉन्फ़िगर करना
ज़रूरी नहीं
अगर आपने किसी पेज को दूसरी जगह ले जाया है या यूआरएल छोटे करने हैं, तो यूआरएल रीडायरेक्ट का इस्तेमाल करें, ताकि लिंक काम न करने की समस्या से बचा जा सके. उदाहरण के लिए, किसी ब्राउज़र को example.com/team
से example.com/about.html
पर रीडायरेक्ट किया जा सकता है.
redirects
एट्रिब्यूट बनाकर, यूआरएल रीडायरेक्ट तय करें. इस एट्रिब्यूट में ऑब्जेक्ट का एक कलेक्शन होता है. इसे "रीडायरेक्ट के नियम" कहा जाता है. हर नियम में, ऐसा यूआरएल पैटर्न तय करें जो अनुरोध किए गए यूआरएल पाथ से मेल खाने पर, Hosting को रीडायरेक्ट करने का जवाब देने के लिए ट्रिगर करता है. ऐसा, तय किए गए डेस्टिनेशन यूआरएल पर रीडायरेक्ट करने के लिए किया जाता है.
redirects
एट्रिब्यूट का बुनियादी स्ट्रक्चर यहां दिया गया है. इस उदाहरण में, /foo
पर किए गए अनुरोधों को /foo
पर रीडायरेक्ट किया गया है. इसके लिए, /bar
पर नया अनुरोध किया गया है.
"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 |
एचटीटीपीएस रिस्पॉन्स कोड
|
रीडायरेक्ट के लिए यूआरएल सेगमेंट कैप्चर करना
ज़रूरी नहीं
कभी-कभी, आपको रीडायरेक्ट करने के नियम के यूआरएल पैटर्न (source
या regex
वैल्यू) के कुछ खास सेगमेंट कैप्चर करने पड़ सकते हैं. इसके बाद, इन सेगमेंट का फिर से इस्तेमाल नियम के destination
पाथ में किया जा सकता है.
फिर से लिखने की सुविधा कॉन्फ़िगर करना
ज़रूरी नहीं
एक ही कॉन्टेंट को कई यूआरएल के लिए दिखाने के लिए, फिर से लिखने की सुविधा का इस्तेमाल करें. फिर से लिखने की सुविधा, पैटर्न मैचिंग के साथ इस्तेमाल करने पर ज़्यादा फ़ायदेमंद होती है. ऐसा इसलिए, क्योंकि पैटर्न से मैच करने वाले किसी भी यूआरएल को स्वीकार किया जा सकता है. साथ ही, क्लाइंट-साइड कोड को यह तय करने दिया जा सकता है कि क्या दिखाना है.
रीराइट करने की सुविधा का इस्तेमाल, उन ऐप्लिकेशन के लिए भी किया जा सकता है जो नेविगेशन के लिए HTML5 pushState का इस्तेमाल करते हैं. जब कोई ब्राउज़र, बताए गए source
या regex
यूआरएल पैटर्न से मेल खाने वाले यूआरएल पाथ को खोलने की कोशिश करता है, तो ब्राउज़र को destination
यूआरएल पर मौजूद फ़ाइल का कॉन्टेंट दिखाया जाएगा.
यूआरएल फिर से लिखने की सुविधा के बारे में बताने के लिए, rewrites
एट्रिब्यूट बनाएं. इसमें ऑब्जेक्ट का एक कलेक्शन (इसे "फिर से लिखने के नियम" कहा जाता है) शामिल होता है. हर नियम में, ऐसा यूआरएल पैटर्न तय करें जो अनुरोध किए गए यूआरएल पाथ से मेल खाने पर, Hosting को इस तरह जवाब देने के लिए ट्रिगर करे जैसे सेवा को डेस्टिनेशन यूआरएल दिया गया हो.
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 का इस्तेमाल करके डाइनैमिक कॉन्टेंट दिखाने के बारे में जानकारी देने वाले लेख से लिया गया है.
उदाहरण के लिए, अपनी Hosting साइट के /bigben
पेज से मिले सभी अनुरोधों को bigben
फ़ंक्शन लागू करने के लिए रीडायरेक्ट करने के लिए:
"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 कंटेनर के लिए सीधे अनुरोध
Firebase Hosting यूआरएल से Cloud Run कंटेनर को ऐक्सेस करने के लिए, rewrites
का इस्तेमाल किया जा सकता है. यहां दिया गया उदाहरण, Cloud Run का इस्तेमाल करके डाइनैमिक कॉन्टेंट दिखाने के बारे में जानकारी देने वाले लेख से लिया गया है.
उदाहरण के लिए, अपनी Hosting साइट के /helloworld
पेज से मिले सभी अनुरोधों को, helloworld
कंटेनर इंस्टेंस को शुरू करने और चलाने के लिए डायरेक्ट करने का तरीका:
"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
Cloud Run से Hosting में बदलने की सुविधा, इन देशों/इलाकों में उपलब्ध है:
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
कस्टम डोमेन 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 |
|
|
rewrites |
||
source |
वह पाथ जिसका इस्तेमाल आपको Dynamic Links के लिए करना है यूआरएल के पाथ को फिर से लिखने वाले नियमों के उलट, Dynamic Links के लिए फिर से लिखने वाले नियमों में रेगुलर एक्सप्रेशन शामिल नहीं किए जा सकते. |
|
dynamicLinks |
true पर सेट होना चाहिए
|
हेडर कॉन्फ़िगर करना
ज़रूरी नहीं
हेडर की मदद से, क्लाइंट और सर्वर, अनुरोध या जवाब के साथ-साथ अतिरिक्त जानकारी भी भेज सकते हैं. हेडर के कुछ सेट, इस बात पर असर डाल सकते हैं कि ब्राउज़र पेज और उसके कॉन्टेंट को कैसे हैंडल करता है. इनमें ऐक्सेस कंट्रोल, पुष्टि करना, कैश मेमोरी, और एन्कोडिंग शामिल हैं.
headers
एट्रिब्यूट बनाकर, फ़ाइल के हिसाब से कस्टम रिस्पॉन्स हेडर तय करें. इस एट्रिब्यूट में हेडर ऑब्जेक्ट का ऐरे होता है. हर ऑब्जेक्ट में, एक यूआरएल पैटर्न तय करें. अगर यह पैटर्न, अनुरोध किए गए यूआरएल पाथ से मेल खाता है, तो Hosting को ट्रिगर किया जाएगा, ताकि वह तय किए गए कस्टम रिस्पॉन्स हेडर लागू कर सके.
headers
एट्रिब्यूट का बुनियादी स्ट्रक्चर यहां दिया गया है. इस उदाहरण में, सभी फ़ॉन्ट फ़ाइलों के लिए CORS हेडर लागू किया गया है.
"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 पेज से मेल खाने वाला हेडर बनाने के लिए, |
||
(सब-)headers की कैटगरी |
कस्टम हेडर, जिन्हें Hosting अनुरोध के पाथ पर लागू करता है हर सब-हेडर में |
||
key |
हेडर का नाम, उदाहरण के लिए Cache-Control |
||
value |
हेडर के लिए वैल्यू, जैसे कि max-age=7200 |
Cache-Control
के बारे में ज़्यादा जानने के लिए, Hosting सेक्शन पर जाएं. इसमें डाइनैमिक कॉन्टेंट दिखाने और माइक्रोसेवाएं होस्ट करने के बारे में बताया गया है. CORS हेडर के बारे में भी ज़्यादा जानें.
.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
— यहpublic
डायरेक्ट्री के रूट में मौजूद सिर्फ़firebase.json
फ़ाइल से मेल खाता है**
— यह किसी भी फ़ाइल या फ़ोल्डर से मेल खाता है, जो किसी भी सब-डायरेक्ट्री में मौजूद हो*
— सिर्फ़public
डायरेक्ट्री के रूट में मौजूद फ़ाइलों और फ़ोल्डर से मेल खाता है**/.*
— यह किसी भी ऐसी फ़ाइल से मेल खाता है जो.
से शुरू होती है. आम तौर पर, यह किसी भी सब-डायरेक्ट्री में छिपी हुई फ़ाइलें होती हैं. जैसे,.git
फ़ोल्डर में मौजूद फ़ाइलें**/node_modules/**
— यहnode_modules
फ़ोल्डर की किसी भी सब-डायरेक्ट्री में मौजूद किसी भी फ़ाइल या फ़ोल्डर से मेल खाता है. यहpublic
डायरेक्ट्री की किसी भी सब-डायरेक्ट्री में मौजूद हो सकता है**/*.@(jpg|jpeg|gif|png)
— यह किसी भी ऐसी फ़ाइल से मेल खाता है जो किसी आर्बिट्रेरी सब-डायरेक्ट्री में मौजूद हो और जिसका नाम इनमें से किसी एक पर खत्म होता हो:.jpg
,.jpeg
,.gif
या.png
Hosting के पूरे कॉन्फ़िगरेशन का उदाहरण
यहां Firebase Hosting के लिए, firebase.json
के पूरे कॉन्फ़िगरेशन का उदाहरण दिया गया है. ध्यान दें कि 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",
}
}