# সাবডোমেইন মোড — সেটআপ গাইড

`app.sunnahti.com/ashik/` এর বদলে `ashik.sunnahti.com`।

## কেন

সেলার নিজের ব্র্যান্ড নিয়ে ফেসবুকে অ্যাড চালায়। `ashik.sunnahti.com` দেখলে সেটা তার নিজের সাইট মনে হয়; `app.sunnahti.com/ashik/` দেখলে মনে হয় সে কারও ভাড়াটে। কুকিও হোস্ট অনুযায়ী আলাদা হয়ে যায়, তাই নিরাপত্তাও এক ধাপ ভালো।

## ধাপ ১ — DNS

cPanel → **Zone Editor** → নতুন **A রেকর্ড**:

```
নাম:  *.sunnahti.com
মান:  আপনার সার্ভারের IP
TTL:  14400
```

Cloudflare ব্যবহার করলে সেখানেও একই `*` A রেকর্ড, আর **Proxy status: DNS only** রাখুন প্রথমে (SSL ইস্যু করার সময় প্রক্সি চালু থাকলে ঝামেলা হয়)।

## ধাপ ২ — ওয়াইল্ডকার্ড SSL

⚠️ **এখানেই বেশিরভাগ লোক আটকায়।** সাধারণ Let's Encrypt (HTTP ভেরিফিকেশন) দিয়ে ওয়াইল্ডকার্ড সার্টিফিকেট **পাওয়া যায় না** — DNS-01 ভেরিফিকেশন লাগে।

তিনটি পথ:

| পথ | খরচ | ঝামেলা |
|---|---|---|
| cPanel AutoSSL (কিছু হোস্টে ওয়াইল্ডকার্ড দেয়) | ফ্রি | হোস্টকে জিজ্ঞেস করতে হবে |
| acme.sh + DNS API (Cloudflare/Namecheap) | ফ্রি | একবার সেটআপ, তারপর অটো রিনিউ |
| কেনা ওয়াইল্ডকার্ড সার্ট | বছরে ~৩–৮ হাজার টাকা | সহজ |

SSL ছাড়া সাবডোমেইন চালু করবেন না — কাস্টমারের চেকআউট পেজে ব্রাউজার "Not secure" দেখালে অর্ডার পড়ে যাবে।

## ধাপ ৩ — ওয়াইল্ডকার্ড সাবডোমেইন

cPanel → **Subdomains**:

```
Subdomain:      *
Domain:         sunnahti.com
Document Root:  public_html/subs
```

`sub-router.php` ফাইলটি ওই ফোল্ডারে **`index.php`** নামে রাখুন। উপরের দুটি মান বসান:

```php
const BASE_DOMAIN = 'sunnahti.com';
const SITES_ROOT  = '/home/আপনার-ইউজার/public_html/sites';
```

## ধাপ ৪ — লাইসেন্স সার্ভারে মোড বদলান

`license-server.php`-এর উপরে:

```php
const URL_MODE    = 'subdomain';        // 'folder' থেকে বদলান
const BASE_DOMAIN = 'sunnahti.com';
```

ব্যস। প্যানেলে, কাস্টমারের ড্যাশবোর্ডে, রিডাইরেক্টে — সব জায়গায় ঠিকানা একসাথে বদলে যাবে, কারণ সব একটাই `site_url()` ফাংশন ব্যবহার করে।

## যা পরীক্ষা করা হয়েছে

| | ফল |
|---|---|
| `ashik.sunnahti.com` → নিজের দোকান | ✓ |
| `rahim.sunnahti.com` → আলাদা ডাটাবেজ, আলাদা পন্য | ✓ |
| সেশন কুকি আলাদা (`SID_ashik` / `SID_rahim`) | ✓ |
| অজানা সাবডোমেইন | ৪০৪ |
| ভুল ডোমেইন হেডার | ৪০৪ |
| পাথ ট্রাভার্সাল (`../../etc`) | ৪০৪ |
| ইউজারনেম বদলের পর পুরোনো সাবডোমেইন | ৩০১ → নতুন, কোয়েরি স্ট্রিংসহ |

## ফোল্ডার মোডে ফিরতে চাইলে

`URL_MODE` আবার `'folder'` করলেই হবে। পুরোনো ফোল্ডার-লিংকগুলো কখনো মুছে যায় না, তাই দুই দিকেই যাওয়া নিরাপদ। তবে একবার সাবডোমেইনে গিয়ে কাস্টমার অ্যাড চালু করার পর ফিরবেন না — তার লিংক ভাঙবে।

## মনে রাখার মতো

- **`www` সংরক্ষিত** — রাউটার `www.` বাদ দিয়ে দেখে, তাই কেউ `www` ইউজারনেম নিতে পারবে না (সংরক্ষিত তালিকায় আছে)।
- **প্রতি দোকানের MySQL ডাটাবেজ এখনো হাতে বানাতে হবে** — cPanel-এ PHP থেকে DB তৈরি করতে root/UAPI লাগে।
- সাবডোমেইন চালু করার পর কাস্টমারকে তার নতুন ঠিকানা SMS/ইমেইলে জানিয়ে দেবেন, আর ফেসবুক পিক্সেলের ডোমেইন ভেরিফিকেশন নতুন করে করতে বলবেন।

---

# কাস্টমারের নিজের ডোমেইন

কাস্টমার চাইলে `ashiksshop.com` দিয়েই দোকান চালাতে পারবে — সাবডোমেইনের বদলে।

## কাস্টমার যা করবে

**ধাপ ১ — মালিকানা প্রমাণ (TXT)**

প্যানেলে ডোমেইন লিখলে একটা কোড পাবে। নিজের ডোমেইনের DNS-এ:

```
টাইপ:  TXT
নাম:   _sunnahti-verify.ashiksshop.com
মান:   (প্যানেলে দেখানো কোড)
```

তারপর "যাচাই করুন" চাপবে। DNS ছড়াতে ৫ মিনিট থেকে কয়েক ঘণ্টা লাগতে পারে।

**ধাপ ২ — সাইট দেখানো (A রেকর্ড)**

```
টাইপ:  A     নাম: @      মান: আপনার সার্ভারের IP
টাইপ:  A     নাম: www    মান: আপনার সার্ভারের IP
```

TXT যাচাই হওয়ার সাথে সাথে `domains.json` ম্যাপ নতুন করে লেখা হয় এবং রাউটার ওই ডোমেইনকে তার দোকানে পাঠাতে শুরু করে। `www.` নিজে থেকেই কাজ করে।

## আপনাকে যা করতে হবে

**১. সার্ভারকে অচেনা ডোমেইন গ্রহণ করতে হবে।** এটাই আসল কাজ:

| সেটআপ | কী করতে হবে |
|---|---|
| **VPS / ডেডিকেটেড** | Apache-এ একটি ডিফল্ট (catch-all) VirtualHost, DocumentRoot = `public_html/subs`। একবার করলেই সব কাস্টম ডোমেইন কাজ করবে |
| **শেয়ার্ড cPanel** | প্রতিটি ডোমেইন **Aliases** (আগের নাম Parked Domains) হিসেবে যোগ করতে হবে, DocumentRoot ওই একই ফোল্ডারে। এটা হাতের কাজ — কাস্টমার বাড়লে ঝামেলা |

শেয়ার্ড হোস্টিংয়ে কাস্টম ডোমেইন সত্যিই স্বয়ংক্রিয় করতে চাইলে cPanel UAPI (`Domains::add_domain`) দিয়ে করা যায়, কিন্তু তার জন্য API টোকেন ও হোস্টের অনুমতি লাগে। **VPS-এ গেলে এই সমস্যাটাই থাকে না** — একটা catch-all vhost, ব্যস।

**২. SSL।** প্রতিটি কাস্টম ডোমেইনের নিজের সার্টিফিকেট লাগবে। ভালো খবর: এখানে ওয়াইল্ডকার্ড লাগে না, তাই সাধারণ Let's Encrypt (HTTP-01) দিয়েই হয় — শর্ত একটাই, ডোমেইনের A রেকর্ড আগে আপনার সার্ভারে আসতে হবে। `acme.sh --issue -d ashiksshop.com -w /home/user/public_html/subs` চালিয়ে দিলেই হয়; cPanel-এ AutoSSL Alias যোগ করার পর নিজেই নিয়ে নেয়।

## নিয়মগুলো

| | |
|---|---|
| `www.` | নিজে থেকে বাদ যায় — `www.myshop.com` ও `myshop.com` একই দোকান |
| আমাদের ডোমেইন | `*.sunnahti.com` কাস্টম ডোমেইন হিসেবে দেওয়া যায় না |
| ডুপ্লিকেট | এক ডোমেইন দুজন নিতে পারবে না |
| যাচাই না হলে | ঠিকানা সাবডোমেইনই থাকে, কিছু ভাঙে না |
| ডোমেইন সরালে | সাথে সাথে ৪০৪, আর ঠিকানা সাবডোমেইনে ফিরে যায় |
| সাবডোমেইন | কাস্টম ডোমেইন চালু থাকলেও কাজ করতে থাকে — দুটোই খোলে |

`domains.json` অ্যাটমিকভাবে (tmp + rename) লেখা হয়, তাই অর্ধেক লেখা ফাইল কখনো পড়া যায় না। **PHP ফাইল ব্যবহার করা হয়নি ইচ্ছাকৃতভাবে** — opcache পুরোনো কপি ধরে রাখত, ফলে ডোমেইন সরিয়ে দেওয়ার পরেও সাইট খুলত।

## পরীক্ষার ফল

| | ফল |
|---|---|
| `ashiksshop.com` → নিজের দোকান | ৩০২ (লগইন) ✓ |
| `www.ashiksshop.com` | একই দোকান ✓ |
| সাবডোমেইনও পাশাপাশি চলে | ✓ |
| অচেনা ডোমেইন | ৪০৪ |
| ডোমেইন নিষ্ক্রিয় করলে | সাথে সাথে ৪০৪ ✓ |
| যাচাইয়ের আগে ঠিকানা | সাবডোমেইনই থাকে ✓ |
| যাচাইয়ের পরে ঠিকানা | কাস্টম ডোমেইন ✓ |

## কাস্টমারকে যা মনে করিয়ে দেবেন

ডোমেইন বদলানো মানে **ফেসবুক পিক্সেলের ডোমেইন ভেরিফিকেশন আবার করতে হবে**, নাহলে কনভার্শন ট্র্যাকিং বন্ধ হয়ে যাবে। চালু অ্যাডের লিংকও নতুন ডোমেইনে বদলে নিতে বলবেন — পুরোনো সাবডোমেইন কাজ করতেই থাকবে, তাই তাড়াহুড়ো নেই।

---

# বর্তমান প্যাকেজ তালিকা

## ফ্রি ট্রায়াল

| | |
|---|---|
| দাম | ৳০ |
| মেয়াদ | ১৪ দিন |
| পন্য | ১ টি |
| ল্যান্ডিং পেজ | ১ টি |
| অর্ডার | ১০ টি |
| সিট | ১ অ্যাডমিন · ১ স্টাফ · ১ এজেন্ট |

কুরিয়ার বুকিং, ফোন-চেক, লাইভ চ্যাট — সব ফিচারই চলে। **প্রতি অ্যাকাউন্টে একবারই।** মেয়াদ শেষে ডেটা অক্ষত থাকে।

## মাসিক সাবস্ক্রিপশন

| প্ল্যান | মাসিক | পন্য/মাস | ল্যান্ডিং | অর্ডার/মাস | সিট (অ্যাডমিন/স্টাফ/এজেন্ট) | কোটার পরে |
|---|---|---|---|---|---|---|
| স্টার্টার | ৫০০৳ | ১০ | ২ | ১০০ | ১/১/২ | ৮৳ |
| বেসিক | ১,০০০৳ | ১০ | ৩ | ২০০ | ১/২/৩ | ৮৳ |
| স্ট্যান্ডার্ড | ২,৫০০৳ | ১০ | ৪ | ৫০০ | ১/৩/৫ | ৮৳ |
| প্রো | ৫,০০০৳ | ২০ | ১০ | ১,০০০ | ২/৫/১০ | ৬৳ |
| বিজনেস | ১০,০০০৳ | ২০ | ১০ | ২,০০০ | ৩/১০/২০ | ৬৳ |
| এন্টারপ্রাইজ | ১৫,০০০৳ | ৫০ | ২০ | ৩,০০০ | ৫/২৫/৫০ | ৫৳ |

সব প্ল্যানেই কোটার ভেতরে প্রতি অর্ডার ৫৳।

### মেয়াদের ছাড়

| মেয়াদ | ছাড় | স্টার্টার | এন্টারপ্রাইজ |
|---|---|---|---|
| ১ মাস | — | ৫০০৳ | ১৫,০০০৳ |
| ৬ মাস | ১০% | ২,৭০০৳ | ৮১,০০০৳ |
| ১২ মাস | ২০% | ৪,৮০০৳ | ১,৪৪,০০০৳ |

পন্যের কোটা মেয়াদ অনুযায়ী জমা হয় — ১২ মাস নিলে স্টার্টারে ১২০টি পন্য একসাথে।

## পে-পার-ইউজ (ওয়ালেট)

মাসিক ফি নেই। ওয়ালেটে টাকা লোড করে প্রতি কনফার্মড অর্ডারে খরচ:

| মাসে অর্ডার | প্রতি অর্ডার |
|---|---|
| ১ – ৯৯ | ৮৳ |
| ১০০ – ৫০০ | ৭৳ |
| ৫০১ – ১,০০০ | ৬৳ |
| ১,০০১ – ৩,০০০ | ৫.৫০৳ |
| ৩,০০১ এর পর | ৫৳ |

ধাপে ধাপে হিসাব — প্রথম ৯৯টি ৮৳ দরে, পরের ৪০১টি ৭৳ দরে। **কখনো ৫৳-এর নিচে নামে না।**

প্রথম রিচার্জের পর ১০টি পন্য, ২টি ল্যান্ডিং পেজ ও ১/১/২ সিট পাওয়া যায়।

## কে কী পায়

| অবস্থা | পন্য | ল্যান্ডিং | অর্ডার |
|---|---|---|---|
| শুধু অ্যাকাউন্ট খুলেছে | ০ | ০ | ০ |
| ট্রায়াল নিয়েছে | ১ | ১ | ১০ (১৪ দিন) |
| ওয়ালেট রিচার্জ করেছে | ১০ | ২ | ব্যালেন্স অনুযায়ী |
| প্ল্যান নিয়েছে | প্ল্যান অনুযায়ী (জমা হয়) | প্ল্যান অনুযায়ী | মাসিক কোটা + ওয়ালেট |

⚠️ **নতুন অ্যাকাউন্ট একদম শূন্য** — ইচ্ছাকৃত। আগে ফ্রি অ্যাকাউন্টেই ১০টি পন্য পাওয়া যেত, ফলে ট্রায়াল নেওয়ার কোনো কারণই থাকত না।

## অ্যাডমিন থেকে যা বদলানো যায়

- **প্ল্যান** পেজ → দাম, কোটা, সিট, ওভারেজ রেট, নতুন প্ল্যান যোগ
- **রেট ধাপ** পেজ → ভলিউম অনুযায়ী দর, ফাঁক/ওভারল্যাপের সতর্কবার্তা
- **সেটিংস** → ট্রায়ালের দিন/পন্য/পেজ/অর্ডার, ৫৳ ফ্লোর, ফ্রি বরাদ্দ, বিকাশ/নগদ নম্বর
