وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

لینک دانلود فایل فارسی یا دارای فاصله خطای ۴۰۴ می‌دهد؛ راهنمای رفع مشکل

آموزش پیدا کردن علت ۴۰۴ فایل دارای نام فارسی یا فاصله و ساخت لینک سالم با percent encoding.

انتشار:
توسط تیم فنی نت‌آرام
۵ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله لینک دانلود فایل فارسی یا دارای فاصله خطای ۴۰۴ می‌دهد؛ راهنمای رفع مشکل در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
فایل را در هاست دانلود می‌بینید، اما لینکی که نام فارسی یا فاصله دارد خطای ۴۰۴ برمی‌گرداند. ممکن است نام فایل با نشانی دقیقاً یکی نباشد، پوشه اشتباه را باز کنید یا هنگام ساخت لینک، کاراکترهایی مانند فاصله و # نادرست کدگذاری شده باشند. خودِ فارسی بودن نام فایل به معنی خراب بودن آن نیست.
با یک فایل آزمایشی کوچک، مسیر عمومی و نام واقعی را پیدا می‌کنیم. بعد نشانی را درست می‌سازیم و پاسخ واقعی سرور را می‌خوانیم. این مراحل را روی فایلی انجام دهید که انتشار عمومی آن مجاز است؛ لینک دارای رمز یا توکن خصوصی را برای دیگران نفرستید.

۱. مطمئن شوید فایل در پوشه عمومی درست است

در File Manager پنل، پوشه‌ای را باز کنید که دامنه یا زیردامنه دانلود واقعاً به آن وصل است. نام این پوشه در سرویس‌های مختلف می‌تواند متفاوت باشد؛ تنها دیدن public_html در یک آموزش ثابت نمی‌کند مسیر حساب شما هم همان است. از تنظیمات دامنه در پنل یا اطلاعات سرویس، ریشه دامنه را پیدا کنید.
یک فایل آزمایشی به نام test-file.txt با متن بی‌اهمیت همان‌جا بسازید و نشانی آن را در مرورگر باز کنید:
کد / دستورhttps://download.example.com/test-file.txt
به جای دامنه نمونه، دامنه خودتان را بگذارید. اگر این فایل هم ۴۰۴ می‌دهد، ابتدا اتصال دامنه به پوشه، نام زیردامنه و مسیر انتشار را اصلاح کنید. اگر فایل آزمایشی باز می‌شود ولی فایل اصلی نه، به تفاوت نام یا پوشه آن می‌رسیم. یک پاسخ ۴۰۳ به جای ۴۰۴ معمولاً به دسترسی یا قواعد محافظت مربوط است.

۲. نام واقعی را دقیق بخوانید

در File Manager، نام فایل را انتخاب و از گزینه تغییر نام فقط برای دیدن نام کامل استفاده کنید؛ بدون نیاز تأیید نکنید. فاصله ابتدا و انتها، پسوند تکراری مانند .zip.zip، تفاوت حروف کوچک و بزرگ، فاصله معمولی و نیم‌فاصله می‌توانند نام‌ها را متفاوت کنند. در بسیاری از سرورهای لینوکسی Book.zip و book.zip دو نام جدا هستند.
اگر SSH دارید و داخل پوشه درست هستید، این دستور نام‌ها را نشان می‌دهد:
کد / دستورpwd ls -lb
خروجی ls -lb ممکن است بعضی فاصله‌ها و کاراکترهای خاص را به صورت نشانه‌گذاری‌شده نمایش دهد. این خروجی را با نامی که قرار است در URL بگذارید مقایسه کنید. دستورها را بدون تغییر در نام فایل اجرا می‌کنید.

۳. فاصله و نشانه‌ها را هنگام ساخت URL درست تبدیل کنید

در بخش مسیر URL، فاصله معمولاً با %20 نمایش داده می‌شود. علامت # در نشانی معمولاً آغاز بخش fragment است و آن بخش به سرور فرستاده نمی‌شود؛ اگر خود نام فایل شامل # است، باید آن کاراکتر در مسیر به شکل %23 کدگذاری شود. علامت ? نیز در URL نقش جداکننده query دارد و برای نام فایل باید درست کدگذاری شود. گذاشتن + به جای فاصله در مسیر همیشه درست نیست؛ کاربرد آن در داده‌های فرم و query با مسیر فرق دارد.
برای تبدیل نام یک فایل به بخش قابل استفاده در URL می‌توانید در Console مرورگر این مثال را اجرا کنید. F12 یا ابزار توسعه مرورگر را باز کنید، وارد زبانه Console شوید و فقط کدهایی را اجرا کنید که می‌فهمید:
کد / دستورencodeURIComponent('گزارش بهار.pdf')
خروجی یک رشته دارای درصد و عدد است. آن را بعد از پوشه و / قرار دهید:
کد / دستورhttps://download.example.com/files/ENCODED-FILENAME
ENCODED-FILENAME را با خروجی واقعی عوض کنید. فقط نام هر بخش مسیر را جداگانه کدگذاری کنید؛ اگر کل URL را با encodeURIComponent تبدیل کنید، نشانه‌های https:// و جداکننده پوشه‌ها هم تبدیل می‌شوند و لینک به شکل مورد نظر کار نمی‌کند. خروجی کدگذاری‌شده را دوباره کدگذاری نکنید؛ در غیر این صورت % ممکن است به %25 تبدیل شود و نام متفاوتی ساخته شود.

۴. لینک را با پاسخ واقعی سرور امتحان کنید

در ترمینال رایانه‌ای که curl دارد، URL کامل آزمایشی را داخل کوتیشن بگذارید:
کد / دستورcurl -I 'https://download.example.com/files/ENCODED-FILENAME'
نشانی نمونه را عوض کنید. خروجی 200 برای درخواست HEAD نشانه خوبی است، اما بعضی سرویس‌ها HEAD را متفاوت از GET پاسخ می‌دهند. اگر HEAD نتیجه روشنی نداد، یک GET محدود انجام دهید:
کد / دستورcurl -sS -D - -o /dev/null -H 'Range: bytes=0-0' 'https://download.example.com/files/ENCODED-FILENAME'
206 معمولاً یعنی همان محدوده یک‌بایتی تحویل شده؛ اگر Range پشتیبانی نشود ممکن است 200 و محتوای کامل برگردد. این نمونه فایل خروجی را روی دیسک ذخیره نمی‌کند، اما سرور ممکن است کل فایل را بفرستد و ترافیک مصرف شود؛ ابتدا با فایل کوچک تست کنید. اگر 301 یا 302 دیدید، هدر Location را بررسی کنید تا مقصد اشتباه یا صفحه ورود را با فایل اصلی اشتباه نگیرید.

۵. اگر هنوز ۴۰۴ است

نام فایل را با نامی کوتاه و لاتین در یک نسخه آزمایشی جدید امتحان کنید؛ بدون هماهنگی فایل اصلی و لینک‌های قدیمی را تغییر ندهید. اگر نام ساده کار می‌کند، لینک قبلی، نیم‌فاصله، تبدیل نام در فرایند آپلود و تعداد دفعات کدگذاری را مقایسه کنید. اگر حتی نام ساده در همان پوشه کار نمی‌کند، ریشه دامنه، قوانین بازنویسی و مسیر پوشه را بررسی کنید.
اگر لینک فقط پس از ورود یا برای برخی کاربران خطا دارد، ممکن است سیستم دسترسی، لینک زمان‌دار یا کش واسطه دخیل باشد؛ نتیجه آزمایش مرورگر ناشناس و ساعت را ثبت کنید. برای مقایسه فایل دانلودشده با محتوای واقعی، راهنمای فایل ZIP که HTML برمی‌گرداند را ببینید. جزئیات سرویس در صفحه هاست دانلود نت‌آرام و توضیح تبدیل کاراکترها در واژه‌نامه MDN آمده است.
اشتراک‌گذاری:
لینکدینتلگرامایکس

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام