آپلود سایت روی هاست؛ راهنمای عملی بدون خطا

آموزش گام‌به‌گام آپلود سایت روی هاست لینوکس: پوشه درست، سطح دسترسی، فایل ایندکس و تست پیش از اتصال دامنه. با دستورات واقعی و خطاهای رایج.

۷ دقیقه به‌روزرسانی ۲۲ شهریور ۱۴۰۵

فایل‌ها را آپلود کرده‌اید اما سایت باز نمی‌شود

همین الان پشت کنترل‌پنل هاست نشسته‌اید، فایل‌ها را با File Manager یا FTP بالا فرستاده‌اید، آدرس دامنه را زده‌اید و یا صفحه سفید می‌بینید یا خطای 404 یا فهرست پوشه‌ها را. این مقاله برای همان لحظه است؛ نه برای فردا که قرار است یاد بگیرید. سه چیز را باید دقیق بفهمید: فایل‌ها کجا بروند، با چه سطح دسترسی، و کدام فایل قرار است اول اجرا شود.

پوشه درست: public_html یا htdocs

در هاست لینوکس سرورنت و تقریباً همه هاست‌های اشتراکی cPanel، ریشه وب شما پوشه‌ای به نام public_html است. فایل‌هایی که اینجا می‌گذارید با آدرس اصلی دامنه در دسترس می‌شوند. اگر دامنه را به هاست متصل نکرده‌اید، همان‌طور که در راهنمای تغییر دامنه سایت توضیح داده شده، ابتدا باید رکوردهای DNS را تنظیم کنید.

اشتباه رایج: فایل‌ها را در پوشه اصلی اکانت (هم‌سطح public_html) آپلود می‌کنید. نتیجه؟ آدرس example.com باز نمی‌شود اما example.com/public_html کار می‌کند. این دقیقاً همان علامتی است که فایل‌ها جای اشتباهی هستند.

اگر سایت شما زیرپوشه دارد (مثلاً public_html/blog) و می‌خواهید دامنه اصلی به همان زیرپوشه اشاره کند، دو راه دارید: فایل .htaccess در ریشه با قانون بازنویسی، یا تغییر DocumentRoot در پنل. راه دوم را توصیه می‌کنم؛ ساده‌تر است و با آپدیت‌های بعدی نمی‌شکند.

ساختار پوشه‌ها را از قبل بسازید

اگر سایت شما وردپرس است، ساختار پوشه‌ها را از قبل در سیستم محلی بسازید و بعد کل پوشه را آپلود کنید. آپلود تکی فایل‌ها در پوشه‌های تو در تو، زمان را هدر می‌دهد و احتمال جا ماندن فایل را بالا می‌برد. با FTP می‌توانید کل پوشه را یکجا بفرستید:

ftp> put -r wordpress-site

این دستور در FTP استاندارد، پوشه و همه زیرپوشه‌ها را به صورت بازگشتی آپلود می‌کند. در File Manager هاست هم گزینه Upload با انتخاب پوشه کامل همین کار را می‌کند.

سطح دسترسی: چرا 777 نمی‌گذاریم

سطح دسترسی فایل‌ها (Permission) تعیین می‌کند چه کسی می‌تواند بخواند، بنویسد یا اجرا کند. مقدار استاندارد برای فایل‌ها 644 و برای پوشه‌ها 755 است. این یعنی مالک می‌نویسد، بقیه فقط می‌خوانند.

اینجا اشتباه می‌کنند: وقتی وردپرس خطای «نیاز به دسترسی نوشتن» می‌دهد، اولین واکنش تغییر همه فایل‌ها به 777 است. این کار مشکل را موقتاً حل می‌کند اما پوشه شما را برای هر اسکریپتی روی همان سرور باز می‌کند. در هاست اشتراکی، سایت شما هم‌سرور با ده‌ها سایت دیگر است. یک فایل با دسترسی 777 یعنی هر کاربر آن سرور می‌تواند آن را تغییر دهد. علامتش را دیده‌اید: سایت یک روز کار می‌کند و فردا یک فایل PHP ناشناس در پوشه آپلود ظاهر شده است.

راه درست: مالکیت فایل‌ها را چک کنید. در cPanel، گزینه Change Permissions را بزنید و ببینید مالک کیست. اگر فایل‌ها با کاربر FTP شما آپلود شده‌اند، مالک همان کاربر است و 644/755 کافی است. اگر خطای نوشتن از سمت PHP می‌آید (مثلاً وردپرس می‌خواهد افزونه نصب کند)، فقط پوشه‌های wp-content را موقتاً 775 کنید، نه همه چیز را.

فایل ایندکس: کدام فایل اول اجرا می‌شود

وب‌سرور وقتی آدرس دامنه را بدون نام فایل می‌بیند، به ترتیب مشخصی دنبال فایل ایندکس می‌گردد. در هاست لینوکس این ترتیب معمولاً این است:

index.php → index.html → index.htm → default.php

یعنی اگر هر دو فایل index.html و index.php در پوشه باشند، index.html اجرا می‌شود. این همان جایی است که خیلی‌ها زمین می‌خورند: یک صفحه HTML موقت ساخته‌اند، بعد وردپرس را آپلود کرده‌اند، اما مرورگر همچنان همان صفحه قدیمی را نشان می‌دهد. نه، کش نیست. فایل index.html هنوز آنجاست و اول اجرا می‌شود.

راه‌حل: فایل index.html اضافی را حذف کنید یا نامش را عوض کنید. اگر می‌خواهید ترتیب را تغییر دهید، در فایل .htaccess بنویسید:

DirectoryIndex index.php index.html

این خط به وب‌سرور می‌گوید اول index.php را نگاه کن. برای بیشتر سایت‌های داینامیک همین یک خط کافی است.

تست پیش از اتصال دامنه

دامنه را به هاست وصل نکرده‌اید و می‌خواهید مطمئن شوید سایت کار می‌کند؟ چند راه دارید که هیچ‌کدام نیاز به تغییر DNS ندارند.

فایل hosts محلی

در سیستم خودتان، فایل hosts را ویرایش کنید تا دامنه به IP سرور شما اشاره کند. در لینوکس و مک:

sudo nano /etc/hosts

و در ویندوز، فایل C:\Windows\System32\drivers\etc\hosts را با Notepad به عنوان Administrator باز کنید. یک خط اضافه کنید:

185.10.10.10 example.com

IP واقعی سرور خود را از کنترل‌پنل هاست بردارید. حالا مرورگر شما example.com را روی سرور جدید می‌بیند، اما بقیه دنیا هنوز DNS قبلی را می‌بینند. این روش برای تست کامل سایت پیش از تغییر DNS بی‌نقص است. بعد از اتمام تست، خط را پاک کنید.

آدرس موقت سرور

بیشتر هاست‌ها یک آدرس موقت می‌دهند، چیزی شبیه server.servernet.cloud/~username. این آدرس برای تست اولیه خوب است اما دو محدودیت دارد: اگر سایت شما از مسیرهای مطلق استفاده کند (مثل /wp-content/...)، لینک‌ها می‌شکنند و اگر وردپرس باشد، باید گزینه Site URL را موقتاً تغییر دهید. برای یک تست سریع که «آیا فایل‌ها درست آپلود شده‌اند» کافی است؛ برای تست کامل، روش فایل hosts را ترجیح دهید.

خطاهای رایج بعد از آپلود

فایل‌ها آپلود شده‌اند، ایندکس درست است، اما هنوز مشکل دارید. این سه خطا را بیشتر از همه می‌بینم:

  • صفحه سفید (HTTP 500): معمولاً سطح دسترسی فایل .htaccess یا خود فایل خراب است. اول فایل .htaccess را موقتاً改名 کنید (مثلاً .htaccess.bak) و دوباره تست کنید. اگر سایت بالا آمد، مشکل از قوانین داخل آن است. راهنمای کامل در رفع صفحه سفید وردپرس موجود است.
  • خطای 403 Forbidden: یعنی وب‌سرور اجازه دسترسی ندارد. سطح دسترسی پوشه اصلی را چک کنید؛ باید 755 باشد نه 750 یا کمتر.
  • خطای اتصال به دیتابیس: فایل کانفیگ (مثل wp-config.php در وردپرس) هنوز اطلاعات دیتابیس جدید را ندارد. نام دیتابیس، کاربر و رمز را از کنترل‌پنل بردارید و در فایل کانفیگ وارد کنید.

اگر سایت بعد از آپلود به‌درستی کار می‌کند اما کند است، پیش از هر اقدامی TTFB را اندازه بگیرید. اگر TTFB بالاست، مشکل از هاست یا کد شماست نه اینترنت کاربر. راهنمای بهینه‌سازی وردپرس روی هاست اشتراکی را برای گام‌های بعدی ببینید.

انتخاب ابزار آپلود: FTP یا File Manager

معیارFile ManagerFTP (مانند FileZilla)
سرعت برای فایل‌های زیادکند؛ هر فایل جدا آپلود می‌شودسریع؛ چند اتصال همزمان
آپلود پوشه کاملمحدود به مرورگریک دستور، کل ساختار
ویرایش فایلویرایشگر داخلی داردباید دانلود و آپلود کنید
اشتباه رایجآپلود در پوشه اشتباهقطع اتصال در فایل‌های حجیم

برای سایتی با کمتر از ۵۰ فایل، File Manager کافی است. برای وردپرس کامل با ده‌ها افزونه و هزاران فایل، FTP را انتخاب کنید. اگر سایت شما واقعاً حجیم است و زمان برایتان مهم است، سرور اختصاصی با دسترسی SSH گزینه بهتری است؛ آنجا می‌توانید با rsync کل سایت را در چند دقیقه منتقل کنید، کاری که با FTP ساعت‌ها طول می‌کشد.

تست نهایی: پیش از اتصال دامنه اصلی

قبل از اینکه DNS را تغییر دهید، این چک‌لیست را کامل کنید:

  1. صفحه اصلی با آدرس موقت یا hosts باز می‌شود و خطایی نمی‌دهد.
  2. همه لینک‌های داخلی کار می‌کنند (نه فقط صفحه اصلی).
  3. فرم‌ها و ورود کاربران تست شده‌اند.
  4. تصاویر و فایل‌های CSS/JS لود می‌شوند (اگر نه، مسیرهای مطلق مشکل دارند).
  5. گواهی SSL را فعال کرده‌اید تا بعد از تغییر DNS، نسخه HTTPS کار کند.

بعد از تغییر DNS، منتظر Propagation نمانید. با ابزار بررسی DNS چک کنید رکوردها در سرورهای مختلف دنیا به‌روز شده‌اند. اگر سایت شما وردپرس است و قبلاً روی دامنه دیگری بود، حتماً راهنمای انتقال دامنه بدون افت سئو را بخوانید؛ چند کوئری در دیتابیس هست که اگر اجرا نشوند، لینک‌های داخلی به دامنه قدیمی اشاره می‌کنند.

پرسش‌های پرتکرار

چرا بعد از آپلود سایت، صفحه سفید می‌بینم؟

صفحه سفید معمولاً خطای PHP است که نمایش داده نمی‌شود. اول فایل .htaccess را موقتاً حذف کنید. اگر مشکل حل نشد، سطح دسترسی فایل‌ها را چک کنید و لاگ خطای هاست را ببینید. در cPanel، مسیر لاگ معمولاً logs/error.log است.

فایل‌های سایت را کجا آپلود کنم؟

در هاست لینوکس، پوشه public_html ریشه وب است. هر فایلی که اینجا بگذارید با آدرس اصلی دامنه در دسترس است. اگر دامنه به هاست متصل نشده، ابتدا DNS را تنظیم کنید.

فرق index.html و index.php چیست؟

وب‌سرور به ترتیب مشخصی بین این دو انتخاب می‌کند و معمولاً index.html اول اجرا می‌شود. اگر سایت داینامیک دارید و صفحه قدیمی HTML هنوز نمایش داده می‌شود، فایل HTML اضافی را حذف کنید یا با خط DirectoryIndex در هاست لینوکس ترتیب را تغییر دهید.

چرا FTP وصل می‌شود اما آپلود در نیمه‌راه قطع می‌شود؟

بیشتر هاست‌ها محدودیت حجم برای هر فایل یا مدت اتصال دارند. فایل‌های حجیم را با File Manager آپلود کنید یا اگر دسترسی SSH دارید، از rsync استفاده کنید که اتصال قطع شده را از همان‌جا ادامه می‌دهد.

آیا این مطلب برایتان مفید بود؟