Laravel supports subdomain routing out of the box, but configuring it on cPanel can be confusing for new developers. Whether you're building a multi-tenant app or organizing admin panels, here's how to properly set up subdomains with Laravel on shared hosting.
๐ ️ Prerequisites
- Laravel project deployed on a cPanel-hosted domain
- Access to the Subdomains section in cPanel
- Basic knowledge of Laravel routing
๐ Step 1: Create Subdomains in cPanel
- Log in to your cPanel account.
- Go to Subdomains under the Domains section.
- Create a subdomain like
admin.example.com
. - Point the document root to your Laravel project’s
public/
directory. For example:/home/your-user/your-laravel-project/public
- Repeat for each subdomain (e.g.
user.example.com
).
๐งญ Step 2: Define Subdomain Routes in Laravel
In your Laravel routes file (routes/web.php
), you can define subdomain-specific routes like this:
Route::domain('admin.example.com')->group(function () {
Route::get('/', [AdminController::class, 'dashboard']);
});
Route::domain('user.example.com')->group(function () {
Route::get('/', [UserController::class, 'home']);
});
This allows Laravel to route requests based on subdomain.
๐ Step 3: Use Wildcard Subdomains (Optional)
For multi-tenant applications, you might want wildcard subdomains like tenant1.example.com
, tenant2.example.com
, etc. To do this:
- In cPanel, create a subdomain with an asterisk (*) — like
*.example.com
. - Point it to the same
public/
directory. - Update your route definition in Laravel:
Route::domain('{account}.example.com')->group(function () { Route::get('/', [TenantController::class, 'index']); });
๐ Step 4: Update .env and Config (If Needed)
- Make sure
APP_URL
in your.env
file reflects your main domain or subdomain. - If needed, update
config/session.php
to allow cross-subdomain sessions:'domain' => '.example.com',
๐งช Step 5: Test Everything
- Visit each subdomain and verify it loads the correct route/view/controller.
- Log activity in
laravel.log
if routes don't behave as expected.
๐ Done!
With these steps, your Laravel application can now handle multiple subdomains in a clean and scalable way — even on shared hosting with cPanel.
If this guide helped, share it with others or drop your questions in the comments!
Comments
Post a Comment