RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
RewriteRule ^(.*)$ index.php [L]
در این پست قراره کد بالا رو کامل بررسی کنیم و ببینیم هر بخشش دقیقا چیکار میکنه. اگر پروژه لاراولی داری که به صفحههای اشتباه میره، این آموزش میتونه بهت کمک کنه. کافیه که این کد رو توی فایل .htaccess
پروژه خودت قرار بدی. 📁
هدف اصلی کد چیه؟ 🎯
این کد به ما کمک میکنه که هر درخواستی که به روت اصلی سرور میاد رو به پوشهی public
بفرستیم و بعد اگه توی public
چیزی پیدا نکرد، بره سراغ index.php
. این کار باعث میشه که کاربرها همیشه صفحهی درست رو ببینن و اگه چیزی پیدا نشد، خطای 404 خود لاراول رو بگیرن.
توضیح هر خط کد 📜
خط اول: <IfModule mod_rewrite.c>
🔵 توضیح: این خط چک میکنه که آیا ماژول mod_rewrite
در سرور فعاله یا نه. چون این ماژول مسئول بازنویسی (Rewrite) آدرسهاست و بدون اون بقیه کد کار نمیکنه.
خط دوم: RewriteEngine On
🔵 توضیح: این خط بازنویسی آدرسها رو فعال میکنه. به سرور میگه که الان قراره آدرسها رو تغییر بدیم.
خط سوم: RewriteRule ^(.*)$ public/$1 [L]
🔵 توضیح: اینجا داریم به سرور میگیم که هر آدرسی که بهش میاد (یعنی هرچی که بعد از example.com/
میاد) رو بفرست به پوشهی public
، البته بدون اینکه تغییری توی خود آدرس دیده بشه.
^
ابتدای آدرس رو نشون میده.(.*)
یعنی هرچیزی که بعد از دامین اومد.$1
به همون آدرس قبلی اشاره میکنه.
پس با این کار داریم مسیر همه چیز رو به public
هدایت میکنیم.
خط چهارم: RewriteRule ^(.*)$ index.php [L]
🔵 توضیح: حالا اگه مسیر به هیچ فایلی داخل public
نخورد، اینجا میاد و آدرس رو به index.php
هدایت میکنه. index.php
، فایل اصلی لاراول هست که درخواستها رو پردازش میکنه و خطای 404 لاراول رو به کاربر نمایش میده.