آموزش رفع خطای 404 در پروژه‌های لاراول

laravel 404 error fix guide
20 آبان 1403

سلام دوستان! احتمالاً شما هم هنگام کار با پروژه‌های لاراول به خطای 404 برخورد کردید. این خطا زمانی پیش می‌آید که سرور نتواند صفحه‌ای که درخواست کردید را پیدا کند. اما شاید بپرسید چرا به جای صفحه پیش‌فرض خطای 404 لاراول، صفحه خطای 404 PHP نمایش داده می‌شود. برای رفع این مشکل، چند مرحله ساده وجود دارد که با هم بررسی می‌کنیم.

اولین دلیل معمول این مشکل می‌تواند تنظیمات نادرست فایل .htaccess باشد. این فایل مسئول هدایت درخواست‌ها به فایل index.php لاراول است. اگر این فایل به درستی تنظیم نشده باشد، ممکن است خطاهای 404 رخ دهند. اطمینان حاصل کنید که این فایل به طور صحیح تنظیم شده است.

دلیل دیگر می‌تواند به خاطر پیکربندی نادرست وب‌سرور (مانند Apache یا Nginx) باشد. برای مثال، در تنظیمات Nginx باید مطمئن شوید که درخواست‌ها به فایل index.php هدایت می‌شوند. در فایل تنظیمات Nginx، خطوط مربوط به try_files باید به درستی تنظیم شده باشند.

سومین دلیل می‌تواند به خاطر پاک نشدن کش لاراول باشد. گاهی اوقات تغییرات لازم را ایجاد می‌کنید، اما کش قدیمی باعث می‌شود که تغییرات اعمال نشوند. در چنین مواردی، دستور php artisan cache:clear می‌تواند نجات‌دهنده باشد.

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


<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

کد بالا قسمت‌هایی از فایل .htaccess است که برای هدایت صحیح درخواست‌ها در لاراول استفاده می‌شود.
"<IfModule mod_rewrite.c>": بررسی می‌کند که آیا ماژول mod_rewrite فعال است یا خیر.
"Options +FollowSymLinks": این گزینه دنبال کردن لینک‌های نمادین را فعال می‌کند.
"RewriteEngine On": فعال‌سازی موتور بازنویسی آدرس‌ها.
"RewriteRule ^(.*)/$ /$1 [L,R=301]": این خط تمام آدرس‌هایی که به / ختم می‌شوند را به آدرس بدون / هدایت می‌کند.
"RewriteCond %{REQUEST_FILENAME} !-d" و "RewriteCond %{REQUEST_FILENAME} !-f": بررسی می‌کند که آیا فایل یا دایرکتوری با نام درخواست شده وجود ندارد.
"RewriteRule ^ index.php [L]": تمامی درخواست‌ها را به index.php هدایت می‌کند.

سوالات متداول

؟

چرا هنگام کار با لاراول ممکن است خطای 404 ظاهر شود؟

؟

چگونه می‌توان مطمئن شد فایل .htaccess به درستی تنظیم شده است؟

؟

چرا پس از انجام تغییرات همچنان خطای 404 رفع نمی‌شود؟