چنانچه در حال مطالعه این مقاله هستید احتمالا صفحه اصلی یا index.php وبسایت شما (ساخته شده با لاراول)، بدون مشکل باز می شود اما صفحات یا لینک های داخلی با خطای Not Found مواجه هستند!
علل وقوع مشکل
این پیام معمولا به چند دلیل رخ می دهد، مواردی چون عدم تنظیم کدهای صحیح در فایل .htaccess، وجود Cache نادرست در پروژه شما و یا نقص در تنظیمات Routing پروژه. در ادامه به ترتیب اولویت به نحوه رفع مشکل می پردازیم. پس در ادامه با ما همراه باشید...
راهکارهای رفع مشکل
1- وجود نقص در کدهای فایل .htaccess
به مسیر اصلی وبسایت خود جایی که محتویات پوشه Public را در آن قرار داده اید مراجعه کنید. فایل .htaccess را باز کنید و اطمینان حاصل کنید که یکی از نمونه های زیر در آن وجود داشته باشد. شما می توانید هر یک از دسته کدهای زیر را مورد بررسی قرار دهید. هر 3 مورد صحیح هستند و می توانید یکی را انتخاب کنید:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
یا
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
یا
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
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>
2- Cache شدن اطلاعات
به مسیر قرارگیری فایل های اصلی لاراول در home یا public_html مراجعه و مسیر زیر را باز کنید:
/bootstrap/cache
ضمن ایجاد بکاپ از این پوشه، فایل های موجود در cache را حذف کنید. حال می توانید با بررسی وبسایت نتیجه را مشاهده کنید.
3- نقص برنامه نویسی در بخش Routing
چنانچه راهکارهای اول و دوم راهگشا نبودند بنابراین تنظیمات Routing پروژه شما با مشکل مواجه است و لازم است با مشاوره یک برنامه نویس اقدام به تصحیح کدهای خود کنید.