اتصال پیشرفته

پراکسی صفحهٔ اختصاصی

صفحهٔ اختصاصی منتشرشدهٔ موچت را با بازنویسی مسیر صفحه، فایل‌ها و API گفتگو در دامنهٔ خودتان نمایش دهید.

با بازنویسی مسیرها می‌توانید صفحهٔ اختصاصی گفتگوی موچت را در دامنهٔ سایت خودتان نمایش دهید. بازدیدکننده چت را در نشانی‌ای مثل https://your-domain.com/help باز می‌کند و همین نشانی در مرورگرش باقی می‌ماند.

مقصد، صفحهٔ منتشرشدهٔ شما در https://widget.mu.chat/standalone?slug=YOUR_SLUG است.

ابتدا صفحهٔ اختصاصی را منتشر و فعال کنید. پراکسی همان صفحه را نمایش می‌دهد و محتوا و ظاهرش همچنان در موچت تنظیم می‌شوند. این روش با قواعد سرور یا سرویس میزبانی سایت شما کار می‌کند و به اسکریپت نصب ویجت نیاز ندارد.

مفهوم اصلی: بازنویسی مسیر

بازنویسی، درخواست را به نشانی دیگری می‌فرستد و پاسخ را بدون هدایت مرورگر به آن نشانی برمی‌گرداند. دامنهٔ شما در نوار نشانی باقی می‌ماند.

  • مبدأ: مسیر دلخواه در سایت شما، مثل /help.
  • مقصد: نشانی صفحهٔ منتشرشدهٔ موچت، همراه با پارامتر slug.

در نمونه‌ها، YOUR_SLUG را با آدرس ذخیره‌شده در انتشار ← صفحه اختصاصی (لینک موچت) ← مدیریت ← انتشار ← آدرس صفحه جایگزین کنید. با بازدید از صفحه آن را بررسی کنید. slug همان مقدار بعد از slug= در لینک است و با شناسهٔ موچت یا توکن ویجت وب‌سایت تفاوت دارد. اگر بعداً آن را تغییر دادید، قواعد پراکسی صفحه و API را با هم به‌روز کنید.

مسیرهای موردنیاز

هر سه مسیر را پراکسی کنید:

  • /help به https://widget.mu.chat/standalone?slug=YOUR_SLUG — صفحهٔ گفتگو.
  • /__mu/* به https://widget.mu.chat/__mu/* — اسکریپت‌ها، استایل‌ها، فونت‌ها، تصاویر و دیگر فایل‌های صفحه.
  • /api/muchat/v2/standalone/YOUR_SLUG/* به https://api.mu.chat/v2/standalone/YOUR_SLUG/* — درخواست‌های HTTP گفتگوی همین صفحه، از جمله فرم‌ها، آپلود و پاسخ‌های جریانی.

متد و بدنهٔ درخواست، پارامترهای URL، هدر X-Auth-Token، کوکی‌ها و هدرهای پاسخ سرویس مقصد، از جمله Set-Cookie و Cache-Control را حفظ کنید. صفحه و API گفتگو را در کش اشتراکی قرار ندهید و پاسخ جریانی را بدون جمع کردن کل بدنه در حافظه منتقل کنید.

صفحهٔ اختصاصی موچت، یک صفحهٔ گفتگوست؛ این نمونه‌ها زیرصفحه‌های /help/* ایجاد نمی‌کنند. به‌روزرسانی زنده مستقیماً با WebSocket به API موچت متصل می‌شود؛ بنابراین قاعدهٔ پراکسی برای /socket.io لازم نیست.

اگر سایت شما مسیریابی زبان، middleware احراز هویت یا مسیر فراگیر دارد، اجازه دهید درخواست صفحه، فایل‌ها و API محدودشده به همین کانال به قواعد پراکسی برسد. سیاست امنیت محتوا را برای /help طوری تنظیم کنید که اسکریپت، فونت، رسانه، درخواست API و اتصال مستقیم WebSocket صفحه مجاز باشند.

نمونه‌های پیاده‌سازی

تب متناسب با فریم‌ورک یا سرویس میزبانی سایتتان را انتخاب کنید. این قواعد را با تنظیمات موجود ترکیب کنید و پیش از قواعد عمومیِ مسیر جایگزین قرار دهید.

تابع rewrites را به فایل next.config.js پروژه اضافه کنید. کافی است YOUR_SLUG را در ثابت زیر جایگزین کنید:

next.config.js
const SLUG = "YOUR_SLUG";

/** @type {import('next').NextConfig} */
const nextConfig = {
  async rewrites() {
    return [
      {
        source: "/help",
        destination: `https://widget.mu.chat/standalone?slug=${SLUG}`
      },
      {
        source: "/__mu/:path*",
        destination: "https://widget.mu.chat/__mu/:path*"
      },
      {
        source: `/api/muchat/v2/standalone/${SLUG}/:path*`,
        destination: `https://api.mu.chat/v2/standalone/${SLUG}/:path*`
      }
    ];
  }
};

module.exports = nextConfig;

پس از تغییر تنظیمات، سرور توسعه را دوباره راه بیندازید و سپس تنظیمات را روی سرور یا سرویس میزبانی منتشر کنید. بازنویسی به مقصد خارجی به سرور نیاز دارد و در خروجی HTML ایستا کار نمی‌کند. اگر فایل پروژه next.config.mjs است، به‌جای module.exports از export default nextConfig استفاده کنید.

پس از انتشار، /help را مستقیم باز و صفحه را بازخوانی کنید. بررسی کنید نشانی روی دامنهٔ شما بماند، فایل‌ها از /__mu/ بارگذاری شوند و درخواست‌های HTTP گفتگو به /api/muchat/v2/standalone/YOUR_SLUG/ برسند. پرسشی بفرستید، تا پایان پاسخ جریانی صبر کنید و فرم یا آپلود فعال را هم آزمایش کنید. دوباره صفحه را بازخوانی کنید تا ادامهٔ نشست گفتگو را ببینید. بررسی بارگذاری اولیهٔ صفحه به‌تنهایی برای تأیید پراکسی کافی نیست.

نقشهٔ سایت

اضافه کردن بازنویسی، مسیر /help را خودکار وارد نقشهٔ سایت شما نمی‌کند. اگر می‌خواهید صفحه در نقشهٔ سایت باشد، نشانی عمومی را خودتان اضافه کنید. وجود در نقشهٔ سایت به‌تنهایی نمایه‌شدن را تضمین نمی‌کند.

مستندات موچت

در این صفحه