اگر وبسایت خود را با استفاده از فریم ورک لاراول طراحی کردید ممکن است در هنگام مراجعه به وبسایت به جای مشاهده آن با لیستی از فایل های موجود در root وبسایت خود مواجه شوید یا اینکه برای مشاهده وبسایت مجبورید از آدرس زیر استفاده کنید:
http://domain.com/public
اما چگونه می توان این مشکل را رفع کرد؟ به طوریکه با مراجعه به آدرس وبسایت، مستقیما محتویات public بدون درج آن در آدرس url نمایش داده شود؟
برای اینکار کافیست یک فایل با نام .htaccess در مسیر پروژه لاراول ایجاد کنید و سپس کد زیر را در آن قرار دهید:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
کار تمام شد! با همین اقدام ساده وبسایت شما بدون نیاز به قرار دادن public در آدرس url، نمایش داده خواهد شد.
حذف کلیه آدرسهای مبتنی بر /public
با اقدام فوق عنوان public از آدرس وبسایت حذف میشود اما در عین حال وبسایت شما از هر دو آدرس زیر در دسترس خواهد بود:
http://domain.com
http://domain.com/public
برای اینکه به طور کلی و به لحاظ ارتقا سطح SEO هیچ آدرس از وبسایت با /public باز نشود، لازم است مراحل زیر را نیز طی کنید:
1- اطمینان حاصل کنید که در مسیر اصلی پروژه لاراول فایل index.php وجود داشته باشد. (در صورتیکه وجود نداشت، فایل Server.php را به index.php تغییر دهید.)
2- فایل .htaccess موجود در مسیر اصلی پروژه لاراول (در مثال ما public_html) را به .htaccess_old تغییر دهید.
3- فایل .htaccess موجود در پوشه public را به مسیر اصلی پروژه لاراول (در مثال ما public_html) منتقل کنید.
4- از طریق بخش Redirect موجود در پنل هاست (مانند cPanel) آدرس domain.com/public را به domain.com، Redirect کنید.
RewriteCond %{HTTP_HOST} ^domain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^public\/?$ "https\:\/\/domain\.com\/" [R=301,L]
کار تمام شد! با انجام 4 مرحله فوق، آدرسهای داخلی ایجاد شده با /public با پیام Not Fount مواجه میشوند و آدرس وبسایت با /public به بدون آن هدایت میشود:
http://domain.com/public > http://domain.com