اعادة كتابة الروابط في nginx

السلام عليكم

لدي سيرفر للتنزيل الفيديوهات .. وهو ب nginx

ونظام الروابط كالتالي:

والرابط اعلاه .. حقيقي اي لم تتم اعادة كتابته .. وجميع هذه المجلدات موجود

هل توجد امكانية لكتابة الرابط بهذا الشكل:

يعني يكون الجزء الأخير مرن تماماً واكتب به الاسم الذي اريده

هل توجد امكانية لعمله؟

وشكراً للجميع


التعليق السابق

سيرفر Nginx خام تماماً

ويتم رفع الفيديوهات إليه عن طريق ال FTP

لا توجد فيه اي لغة برمجة -أقصد السيرفر-.

حسناً، بما أنك تستخدم Nginx فلا يستحسن أن تستخدم .htaccess تستطيع عمل أعادة كتابة الروابط (Rewrite) عن طريق ملف nginx.conf غالبا ما يكون في المسار

    /etc/nginx 

هذه أبسط صيغة لعمل Rewrite

location /videos/ {
    rewrite ^/(.*)?$ /route.php?uri=$1  last;
}

في المثال السابق سوف يحول أي شيء بعد videos إلى GET Request attributes لملف route.php

تستطيع اعادة توجيه الزائر لأي ملف آخر تريد، كذلك تستطيع إعادة توجيه الزائر الى ملف الفيديو مباشرة.

لتفاصيل أكثر تستطيع البحث Nginx rewrite rule

xTiGeRz أضف ردا

للأسف أخي لم لعمل معى .. وانت كتبت كود ل php والمطلوب ل mp4 إي ملف ثابت وليس داينمك

حتى اوضح لك قصدي .. الفيديوهات عندي تنتج ب 4 جودات 1080p 720p 480p 360p

واخزن في الداتابين ال timestamp و md5 id حتى اصل للملف بسهولة

شكل الروابط كالتالي:

الروابط السابقة هي الجودات للفيديو الواحد .. لها نفس المجلد الأب والأختلاف في اسم الفيديو حسب الجودة

اي المسارات حقيقة .. وبدون filename الفيديو يعمل طبيعي ..

عند اضافة filename يتم وضع http header الخاص بإجبار المتصفح على التنزيل attachment

والتنزيل في الجوال لسوء الحظ لا يعير للهدرز أي بال .. ويقوم بتنزيل حسب الاسم الأخير في الرابط في حالتي

720p.mp4 480p.mp4 الخ ..

لذلك انا اطمح لأحد حلين اما ان تكتب قيمة filename بعد رابط الفيديو الحقيقي واعتقد انها مستحيله ولكن لست متأكد .. بالشكل التالي:

او الطريقة الأخرى .. ان يتم وضع اسم الملف الحقيقي في GET Query ويتم اعدة كتابة الرابط مع filename بالشكل التالي:

ان شاء الله اكون قد وفقت في شرح مقصدي .. واتمنى منك مساعدتي :)

بحثت كثيراً كثيراً كثيراً ولم اجد احد مشكلته مشابهة لمشكلتي :(

شكرا لك

هل صيغة جميع المقاطع mp4 ؟

xlmnxp أضف ردا

قم بتحرير الملف default.conf في المسار /etc/nginx/conf.d (بصلاحية المالك Root)

sudo nano /etc/nginx/conf.d/default.conf

ثم اضف بداخلة الكود التالي

# nginx configuration
server{
  location /f {
    rewrite ^/f/videos/(\d+)/(.*)/(.*)/(.+)$ /videos/$1/$2/$3.mp4?filename=$4 break;
  }
}

واحفظه وقم بإعدات تشغيل الـ ngnix باستخدم الامر التالي ( بصلاحية المالك Root )

sudo service nginx reload