হোস্টিং আচরণ কনফিগার করুন

Firebase Hosting সাথে, আপনি আপনার সাইটে অনুরোধের জন্য কাস্টমাইজড হোস্টিং আচরণ কনফিগার করতে পারেন।

Hosting জন্য আপনি কি কনফিগার করতে পারেন?

  • আপনার স্থানীয় প্রকল্প ডিরেক্টরির কোন ফাইলগুলিকে আপনি Firebase Hosting এ স্থাপন করতে চান তা নির্দিষ্ট করুন৷ কিভাবে শিখুন.

  • একটি কাস্টমাইজড 404/নট ফাউন্ড পেজ পরিবেশন করুন। কিভাবে শিখুন.

  • আপনি সরানো বা মুছে ফেলা পৃষ্ঠাগুলির জন্য redirects সেট আপ করুন৷ কিভাবে শিখুন.

  • এই উদ্দেশ্যগুলির যেকোনো একটির জন্য rewrites সেট আপ করুন:

    • একাধিক URL-এর জন্য একই বিষয়বস্তু দেখান। কিভাবে শিখুন.

    • একটি ফাংশন পরিবেশন করুন বা একটি Hosting URL থেকে একটি Cloud Run কন্টেইনার অ্যাক্সেস করুন৷ কিভাবে শিখুন: ফাংশন বা ধারক

    • একটি কাস্টম ডোমেইন Dynamic Link তৈরি করুন। কিভাবে শিখুন.

  • একটি অনুরোধ বা প্রতিক্রিয়া সম্পর্কে অতিরিক্ত তথ্য পাঠাতে headers যোগ করুন, যেমন ব্রাউজারগুলি কীভাবে পৃষ্ঠা এবং এর বিষয়বস্তু (প্রমাণিকরণ, ক্যাশিং, এনকোডিং, ইত্যাদি) পরিচালনা করা উচিত। কিভাবে শিখুন.

  • ব্যবহারকারীর ভাষা পছন্দ এবং/অথবা দেশের উপর ভিত্তি করে নির্দিষ্ট বিষয়বস্তু পরিবেশন করতে আন্তর্জাতিকীকরণ (i18n) পুনর্লিখন সেট আপ করুন। জানুন কিভাবে (ভিন্ন পৃষ্ঠা)।

আপনি কোথায় আপনার Hosting কনফিগারেশন সংজ্ঞায়িত করবেন?

আপনি আপনার firebase.json ফাইলে আপনার Firebase Hosting কনফিগারেশন সংজ্ঞায়িত করুন৷ আপনি যখন firebase init কমান্ড চালান তখন Firebase স্বয়ংক্রিয়ভাবে আপনার প্রজেক্ট ডিরেক্টরির রুটে আপনার firebase.json ফাইল তৈরি করে।

আপনি এই পৃষ্ঠার নীচে একটি সম্পূর্ণ firebase.json কনফিগারেশন উদাহরণ (শুধু Firebase Hosting কভার করে) খুঁজে পেতে পারেন। মনে রাখবেন যে একটি firebase.json ফাইলে অন্যান্য Firebase পরিষেবার কনফিগারেশনও থাকতে পারে।

আপনি Hosting REST API ব্যবহার করে নিয়োজিত firebase.json সামগ্রী পরীক্ষা করতে পারেন।

Hosting প্রতিক্রিয়া অগ্রাধিকার ক্রম

এই পৃষ্ঠায় বর্ণিত বিভিন্ন Firebase Hosting কনফিগারেশন বিকল্পগুলি কখনও কখনও ওভারল্যাপ করতে পারে। যদি কোন দ্বন্দ্ব থাকে, Hosting নিম্নলিখিত অগ্রাধিকার ক্রম ব্যবহার করে তার প্রতিক্রিয়া নির্ধারণ করে:

  1. সংরক্ষিত নামস্থান যা একটি /__/* পাথ সেগমেন্ট দিয়ে শুরু হয়
  2. কনফিগার করা পুনঃনির্দেশ
  3. অবিকল স্থির সামগ্রী
  4. কনফিগার করা পুনর্লিখন
  5. কাস্টম 404 পৃষ্ঠা
  6. ডিফল্ট 404 পৃষ্ঠা

আপনি যদি i18n পুনর্লিখন ব্যবহার করে থাকেন, তাহলে আপনার "i18n বিষয়বস্তু" সামঞ্জস্য করার জন্য সঠিক-ম্যাচ এবং 404 হ্যান্ডলিং অগ্রাধিকার ক্রম পরিসরে প্রসারিত করা হয়।

কোন ফাইল স্থাপন করতে হবে তা নির্দিষ্ট করুন

ডিফল্ট বৈশিষ্ট্যগুলি — public এবং ignore — ডিফল্ট firebase.json ফাইলে অন্তর্ভুক্ত আপনার প্রকল্প ডিরেক্টরির কোন ফাইলগুলি আপনার Firebase প্রকল্পে স্থাপন করা উচিত তা নির্ধারণ করে৷

একটি firebase.json ফাইলের ডিফল্ট hosting কনফিগারেশন এইরকম দেখায়:

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

সর্বজনীন

প্রয়োজন
Firebase Hosting এ কোন ডিরেক্টরি স্থাপন করতে হবে তা public বৈশিষ্ট্য নির্দিষ্ট করে। ডিফল্ট মান হল 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 ত্রুটি ট্রিগার করে।

পুনঃনির্দেশ কনফিগার করুন

ঐচ্ছিক
আপনি একটি পৃষ্ঠা সরানো হলে বা URL ছোট করতে ভাঙা লিঙ্ক প্রতিরোধ করতে একটি URL পুনঃনির্দেশ ব্যবহার করুন৷ উদাহরণস্বরূপ, আপনি example.com/team থেকে example.com/about.html এ একটি ব্রাউজার পুনঃনির্দেশ করতে পারেন।

একটি redirects অ্যাট্রিবিউট তৈরি করে URL পুনঃনির্দেশ নির্দিষ্ট করুন যাতে বস্তুর একটি অ্যারে থাকে (যাকে "পুনঃনির্দেশ নিয়ম" বলা হয়)। প্রতিটি নিয়মে, একটি URL প্যাটার্ন নির্দিষ্ট করুন যা অনুরোধ URL পাথের সাথে মিলে গেলে, নির্দিষ্ট গন্তব্য URL-এ একটি পুনঃনির্দেশের সাথে প্রতিক্রিয়া জানাতে Hosting ট্রিগার করে৷

এখানে একটি redirects অ্যাট্রিবিউটের মৌলিক কাঠামো। এই উদাহরণটি /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 প্রতিটি অনুরোধের শুরুতে সমস্ত URL পাথের সাথে source বা regex মান তুলনা করে (ব্রাউজার সেই পাথে একটি ফাইল বা ফোল্ডার আছে কিনা তা নির্ধারণ করার আগে)। যদি একটি মিল পাওয়া যায়, তাহলে Firebase Hosting অরিজিন সার্ভার একটি HTTPS পুনঃনির্দেশ প্রতিক্রিয়া পাঠায় যাতে ব্রাউজারকে destination URL এ একটি নতুন অনুরোধ করতে বলে।

মাঠ বর্ণনা
redirects
source (প্রস্তাবিত)
বা regex

একটি URL প্যাটার্ন যা, যদি প্রাথমিক অনুরোধের URL এর সাথে মিলে যায়, Hosting পুনঃনির্দেশ প্রয়োগ করতে ট্রিগার করে

destination

একটি স্ট্যাটিক URL যেখানে ব্রাউজার একটি নতুন অনুরোধ করবে

এই URL একটি আপেক্ষিক বা একটি পরম পথ হতে পারে.

type

HTTPS প্রতিক্রিয়া কোড

  • 'স্থায়ীভাবে স্থানান্তরিত' এর জন্য 301 ধরনের ব্যবহার করুন
  • 'ফাউন্ড' (অস্থায়ী পুনঃনির্দেশ) এর জন্য 302 ধরনের ব্যবহার করুন

পুনঃনির্দেশের জন্য URL বিভাগগুলি ক্যাপচার করুন

ঐচ্ছিক
কখনও কখনও, আপনাকে একটি পুনঃনির্দেশিত নিয়মের URL প্যাটার্নের নির্দিষ্ট অংশগুলি ক্যাপচার করতে হতে পারে ( source বা regex মান), তারপর নিয়মের destination পথে এই বিভাগগুলি পুনরায় ব্যবহার করুন৷

পুনর্লিখন কনফিগার করুন

ঐচ্ছিক
একাধিক URL-এর জন্য একই বিষয়বস্তু দেখানোর জন্য একটি পুনর্লিখন ব্যবহার করুন। পুনঃলিখনগুলি প্যাটার্ন ম্যাচিংয়ের জন্য বিশেষভাবে উপযোগী, কারণ আপনি প্যাটার্নের সাথে মেলে এমন যেকোনো URL গ্রহণ করতে পারেন এবং ক্লায়েন্ট-সাইড কোডকে কী প্রদর্শন করতে হবে তা নির্ধারণ করতে দিন।

ন্যাভিগেশনের জন্য HTML5 pushState ব্যবহার করে এমন অ্যাপগুলিকে সমর্থন করার জন্য আপনি পুনর্লিখনও ব্যবহার করতে পারেন। যখন একটি ব্রাউজার নির্দিষ্ট source বা regex URL প্যাটার্নের সাথে মেলে এমন একটি URL পাথ খোলার চেষ্টা করে, তখন ব্রাউজারটিকে destination URL-এ ফাইলের বিষয়বস্তু দেওয়া হবে।

একটি rewrites অ্যাট্রিবিউট তৈরি করে URL পুনর্লিখন নির্দিষ্ট করুন যাতে বস্তুর একটি অ্যারে থাকে (যাকে "পুনরায় লেখার নিয়ম" বলা হয়)। প্রতিটি নিয়মে, একটি URL প্যাটার্ন নির্দিষ্ট করুন যা অনুরোধ URL পাথের সাথে মিলে গেলে, 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 URL প্যাটার্নের সাথে মেলে এমন URL পাথে কোনো ফাইল বা ডিরেক্টরি বিদ্যমান না থাকে। যখন একটি অনুরোধ একটি পুনর্লিখন নিয়ম ট্রিগার করে, ব্রাউজার একটি HTTP পুনঃনির্দেশের পরিবর্তে নির্দিষ্ট destination ফাইলের প্রকৃত বিষয়বস্তু ফেরত দেয়।

মাঠ বর্ণনা
rewrites
source (প্রস্তাবিত)
বা regex

একটি URL প্যাটার্ন যা, যদি প্রাথমিক অনুরোধের URL-এর সাথে মিলে যায়, Hosting পুনঃলিখন প্রয়োগ করতে ট্রিগার করে

destination

একটি স্থানীয় ফাইল যা অবশ্যই বিদ্যমান

এই URL একটি আপেক্ষিক বা একটি পরম পথ হতে পারে.

একটি ফাংশন সরাসরি অনুরোধ

আপনি একটি Firebase Hosting URL থেকে একটি ফাংশন পরিবেশন করতে rewrites ব্যবহার করতে পারেন। নিম্নলিখিত উদাহরণটি Cloud Functions ব্যবহার করে গতিশীল সামগ্রী পরিবেশন করার একটি উদ্ধৃতি।

উদাহরণস্বরূপ, bigben ফাংশনটি চালানোর জন্য আপনার Hosting সাইটে পৃষ্ঠা /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 ব্যবহার করে), আপনার ফাংশনটি নিম্নলিখিত URLগুলির মাধ্যমে পৌঁছানো যায়:

  • আপনার ফায়ারবেস সাবডোমেন:
    PROJECT_ID .web.app/bigben এবং PROJECT_ID .firebaseapp.com/bigben

  • যেকোনো সংযুক্ত কাস্টম ডোমেন :
    CUSTOM_DOMAIN /bigben

Hosting এর সাথে ফাংশনগুলিতে অনুরোধগুলি পুনঃনির্দেশ করার সময়, সমর্থিত HTTP অনুরোধের পদ্ধতিগুলি হল GET , POST , HEAD , PUT , DELETE , PATCH , এবং OPTIONS ৷ অন্যান্য পদ্ধতি যেমন REPORT বা PROFIND সমর্থিত নয়।

একটি Cloud Run কন্টেইনারে সরাসরি অনুরোধ

আপনি একটি Firebase Hosting URL থেকে একটি Cloud Run কন্টেইনার অ্যাক্সেস করতে rewrites ব্যবহার করতে পারেন। নিম্নলিখিত উদাহরণটি Cloud Run ব্যবহার করে গতিশীল সামগ্রী পরিবেশন করার একটি উদ্ধৃতি।

উদাহরণস্বরূপ, helloworld কন্টেইনার ইনস্ট্যান্সের স্টার্টআপ এবং চলমান ট্রিগার করার জন্য আপনার Hosting সাইটে /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 ব্যবহার করে), আপনার কন্টেইনার চিত্রটি নিম্নলিখিত URLগুলির মাধ্যমে পৌঁছানো যায়:

  • আপনার ফায়ারবেস সাবডোমেন:
    PROJECT_ID .web.app/helloworld এবং PROJECT_ID .firebaseapp.com/helloworld

  • যেকোনো সংযুক্ত কাস্টম ডোমেন :
    CUSTOM_DOMAIN /helloworld

Hosting সহ Cloud Run কন্টেইনারগুলিতে অনুরোধগুলিকে পুনর্নির্দেশ করার সময়, সমর্থিত HTTP অনুরোধ পদ্ধতিগুলি হল GET , POST , HEAD , PUT , DELETE , PATCH , এবং OPTIONS ৷ অন্যান্য পদ্ধতি যেমন REPORT বা PROFIND সমর্থিত নয়।

সেরা পারফরম্যান্সের জন্য, নিম্নলিখিত অঞ্চলগুলি ব্যবহার করে Hosting সাথে আপনার Cloud Run পরিষেবাটি সংযোজন করুন:

  • 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 অ্যাট্রিবিউট তৈরি করে কাস্টম, ফাইল-নির্দিষ্ট প্রতিক্রিয়া শিরোনাম নির্দিষ্ট করুন যাতে হেডার অবজেক্টের একটি অ্যারে রয়েছে। প্রতিটি বস্তুতে, একটি URL প্যাটার্ন নির্দিষ্ট করুন যা অনুরোধ URL পাথের সাথে মিলে গেলে, নির্দিষ্ট কাস্টম প্রতিক্রিয়া শিরোনাম প্রয়োগ করতে 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

একটি URL প্যাটার্ন যা, যদি প্রাথমিক অনুরোধ URL-এর সাথে মিলে যায়, কাস্টম শিরোনাম প্রয়োগ করতে Hosting ট্রিগার করে৷

আপনার কাস্টম 404 পৃষ্ঠার সাথে মেলে একটি শিরোনাম তৈরি করতে, আপনার source বা regex মান হিসাবে 404.html ব্যবহার করুন৷

(সাব-) headers অ্যারে

কাস্টম শিরোনাম যে Hosting অনুরোধ পাথ প্রযোজ্য

প্রতিটি উপ-শিরোনাম অবশ্যই একটি key এবং value জোড়া অন্তর্ভুক্ত করতে হবে (পরবর্তী দুটি সারি দেখুন)।

key হেডারের নাম, উদাহরণস্বরূপ Cache-Control
value হেডারের মান, উদাহরণস্বরূপ max-age=7200

আপনি Hosting বিভাগে Cache-Control সম্পর্কে আরও জানতে পারেন যা গতিশীল সামগ্রী পরিবেশন এবং মাইক্রোসার্ভিসেস হোস্ট করার বর্ণনা দেয়। আপনি CORS শিরোনাম সম্পর্কে আরও জানতে পারেন।

.html এক্সটেনশন নিয়ন্ত্রণ করুন

ঐচ্ছিক
cleanUrls অ্যাট্রিবিউট আপনাকে URL-এ .html এক্সটেনশন অন্তর্ভুক্ত করা উচিত কিনা তা নিয়ন্ত্রণ করতে দেয়।

true হলে, Hosting আপলোড করা ফাইল URL থেকে স্বয়ংক্রিয়ভাবে .html এক্সটেনশন ড্রপ করে। যদি অনুরোধে একটি .html এক্সটেনশন যোগ করা হয়, Hosting একই পথে একটি 301 পুনঃনির্দেশ করে কিন্তু .html এক্সটেনশনটি সরিয়ে দেয়।

একটি cleanUrls অ্যাট্রিবিউট অন্তর্ভুক্ত করে URL-এ .html এর অন্তর্ভুক্তি কীভাবে নিয়ন্ত্রণ করা যায় তা এখানে রয়েছে:

"hosting": {
  // ...

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

ট্রেলিং স্ল্যাশ নিয়ন্ত্রণ করুন

ঐচ্ছিক
trailingSlash অ্যাট্রিবিউট আপনাকে স্ট্যাটিক কন্টেন্ট ইউআরএলে ট্রেলিং স্ল্যাশ অন্তর্ভুক্ত করা উচিত কিনা তা নিয়ন্ত্রণ করতে দেয়।

  • true হলে, Hosting একটি ট্রেলিং স্ল্যাশ যোগ করতে URLগুলিকে পুনঃনির্দেশ করে।
  • false হলে, Hosting একটি ট্রেলিং স্ল্যাশ সরাতে URLগুলিকে পুনঃনির্দেশ করে৷
  • অনির্দিষ্ট হলে, Hosting শুধুমাত্র ডিরেক্টরি সূচী ফাইলের জন্য ট্রেলিং স্ল্যাশ ব্যবহার করে (উদাহরণস্বরূপ, about/index.html )।

trailingSlash অ্যাট্রিবিউট যোগ করে ট্রেইলিং স্ল্যাশগুলি কীভাবে নিয়ন্ত্রণ করা যায় তা এখানে রয়েছে:

"hosting": {
  // ...

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

trailingSlash বৈশিষ্ট্য Cloud Functions বা Cloud Run দ্বারা পরিবেশিত গতিশীল সামগ্রীতে পুনর্লিখনকে প্রভাবিত করে না।

গ্লোব প্যাটার্ন ম্যাচিং

Firebase Hosting কনফিগারেশন বিকল্পগুলি এক্সটগ্লোবের সাথে গ্লোব প্যাটার্ন ম্যাচিং স্বরলিপির ব্যাপক ব্যবহার করে, যেভাবে গিট gitignore নিয়মগুলি পরিচালনা করে এবং বোওয়ার নিয়মগুলি 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",

  }
}