How to Remove index.php from url in Laravel?

By Hardik Savani May 14, 2024 Category : Laravel

In this tutorial we will go over the demonstration of how to remove index.php from url in laravel. We will use laravel 8 remove index.php from url. let’s discuss about remove index php from url laravel digitalocean. This article will give you simple example of remove index.php from url in laravel in ubuntu. Follow bellow tutorial step of remove index.php in laravel 6, laravel 7, laravel 8, laravel 9, laravel 10 and laravel 11.

If you think about SEO perspective then it will generate duplicate link from your mail link with index.php. so if you have open your website link with index.php and without index.php url as like bellow:

Page URL:

// Correct Way

https://example.com/about-us

// Bad Way

https://example.com/index.php/about-us

I think above both link will works but not good practice so you must have to remove index.php from url. so if you open url with index.php then it should redirect to without index.php. so you can do it with following solution.

i will give you simple solution as bellow that will works with any server link digitalocean, aws, go-daddy etc. so let's see bellow solution.

app/Providers/RouteServiceProvider.php

<?php

namespace App\Providers;

use Illuminate\Cache\RateLimiting\Limit;

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;

use Illuminate\Http\Request;

use Illuminate\Support\Facades\RateLimiter;

use Illuminate\Support\Facades\Route;

use Illuminate\Support\Str;

class RouteServiceProvider extends ServiceProvider

{

/**

* The path to the "home" route for your application.

*

* This is used by Laravel authentication to redirect users after login.

*

* @var string

*/

public const HOME = '/home';

/**

* Define your route model bindings, pattern filters, etc.

*

* @return void

*/

public function boot()

{

$this->removeIndexPHPFromURL();

$this->configureRateLimiting();

$this->routes(function () {

Route::prefix('api')

->middleware('api')

->namespace($this->namespace)

->group(base_path('routes/api.php'));

Route::middleware('web')

->namespace($this->namespace)

->group(base_path('routes/web.php'));

});

}

/**

* Write code on Method

*

* @return response()

*/

protected function removeIndexPHPFromURL()

{

if (Str::contains(request()->getRequestUri(), '/index.php/')) {

$url = str_replace('index.php/', '', request()->getRequestUri());

if (strlen($url) > 0) {

header("Location: $url", true, 301);

exit;

}

}

}

/**

* Configure the rate limiters for the application.

*

* @return void

*/

protected function configureRateLimiting()

{

RateLimiter::for('api', function (Request $request) {

return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());

});

}

}

Now you can create route and check with that:

Create Route

Route::get('/about-us', function () {

dd('About US');

});

now if you open url like bellow then:

https://example.com/index.php/about-us

will redirect to:

https://example.com/about-us

I hope it can help you...

Tags :
Shares