آموزش ریدایرکت صفحات با .htaccess برای پروژه‌های لاراول 🚀

laravel htaccess redirect
20 آبان 1403

    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 لاراول رو به کاربر نمایش می‌ده.

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