শেয়ার্ড হোস্টিং এ লারাভেল প্রজেক্ট আপলোড

লারাভেলে অ্যাপ ডেভেলপমেন্টে আমি সবসময় php artisan serve কমান্ড রান করেই ডেভ সার্ভার রান করি। মোটামুটি অভ্যস্থ বলা চলে। তো ডেভেলপমেন্টের জন্য এটা কোনো ইস্যু না বা এটা কোনো প্রবলেমও না আবার সমাধান না। যার যেভাবে ইচ্ছা সেভাবেই খাবে, কেউ চামচ দিয়ে খাবে, কেউ হাত দিয়ে খাবে। যার যার অভিরুচি। সমস্যা বাঁধলো প্রজেক্ট যখন সার্ভারে রান করতে গেলাম। তাও আবার শেয়ার্ড হোস্টিংএ। শেয়ার্ড হোস্টিং এ তো আবার কমান্ড রান করতে পারব না তাই না! সেখানে অন্যসব php প্রোজেক্টের মতো করেই চালাতে হবে।

প্রজেক্ট আপলোড করার পর দেখি সাইটের অবস্থা একেবারে নাজেহাল। কোনো CSS, JS Image ফাইলই পায়নি। গেলো মাথা খারাপ হয়ে। এখন আবার অ্যাসেট রিরাইট করা? না! এ হতে পারে না। আইলসামি শিল্পের চর্চা করতে নেমে পড়লাম সমাধানের সন্ধানে।

অনেক সল্যুশন পেলেও সেখানে মন মতো পড়তেছে না। আমি একফাইল যথেষ্ট টাইপ কোনো একটা সল্যুশন খুঁজতেছিলাম। কিন্তু বেশিরভাগ সল্যুশন যা পেলাম তাতে বেশ কয়েক জায়গায় হাত দিতে হয়।

যেভাবে সমাধান করলাম

প্রজেক্টের রুট ফোল্ডারে থাকা server.php ফাইলটাকে আপনি রিনেম করে সেটাকে index.php বানিয়ে দিন। তারপর একটা .htaccess ফাইল তৈরি করে নিন। এবং সেটাতে নিচের কোডটুকু বসিয়ে দিন।

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^ ^$1 [N]

    RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
    RewriteRule ^(.*)$ public/$1

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php

</IfModule>

এই শেষ! আর কিছু করতে হবে না। এবার প্রজেক্ট রান করে দেখুন। সব ঠিক থাকলে আশাকরি আপনার সমস্যা আমার সমস্যার মতো সমাধান হয়ে যাবে।

বেস্ট অব লাক।