تقديم Laravel من مجلد public
وجّه نطاقك إلى مجلد /public في Laravel، ليصل الزوار إلى example.com لا إلى example.com/public.
اجعل example.com يقدّم تطبيق Laravel دون /public في الرابط. ينطبق على
الاستضافة المشتركة والموزِّعة والمميّزة.
يتوقّع Laravel أن يكون مجلد public وحده متاحًا للويب. وعلى الاستضافة المشتركة
لا تستطيع عادةً تغيير الجذر المستنَدي، فتؤدي قاعدة إعادة كتابة المهمة نفسها.
هذا يهمّ للأمان لا للترتيب فقط. فإن كان مجلد Laravel كله متاحًا للويب، فيمكن
طلب .env — الذي يحمل كلمة مرور قاعدة بياناتك ومفتاح التطبيق — مباشرة عبر
HTTP.
أضف إعادة الكتابة
-
في cPanel، افتح File Manager وانتقل إلى
public_html. -
فعّل Settings ← Show Hidden Files (dotfiles)، فـ
.htaccessمخفي افتراضيًا. -
افتح
.htaccess، أو أنشئه إن لم يكن موجودًا. -
أضف هذا في أعلى الملف:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> -
احفظ.
تأكّد أنه نجح
زر https://example.com. وينبغي أن يُحمَّل تطبيقك، دون /public في العنوان.
ثم تأكّد أن الملف المهم غير قابل للوصول:
curl -sI https://example.com/.env | head -n 1وتريد 403 أو 404. أما 200 فتعني أن .env يُقدَّم — توقّف وأصلح ذلك قبل
المضيّ.
خيار أفضل إن كان متاحًا لك
على خادم VPS أو مخصّص، اضبط الجذر المستنَدي على مجلد public مباشرة في WHM بدل
إعادة الكتابة. فهو جزء متحرّك أقل، ولا يُكشَف شيء فوق public أصلًا.
إن لم ينجح
- حلقة إعادة توجيه — فهناك
RewriteRuleأخرى فوق هذه. ويجب أن تأتي قاعدة Laravel أولًا. - الرابط القديم مخزَّن مؤقتًا — امسح ذاكرة متصفحك، أو اختبر في نافذة خاصة.
- خطأ 500 — راجع
error_logفيpublic_html. راجع العثور على سجل الأخطاء.