To remove public /index.php from url in laravel; Simply copy .htaccess file from public folder to laravel project root folder and create new index.php file in root folder.
In this tutorial guide, you will find very easy two options that help you remove “public\index.php” from your Laravel project or app.
How to Remove “Public\Index.php” From Laravel URL Using htaccess
Here are two options to remove public index.php from url using htaccess file in laravel applications:
Option 1 – Create index.php and Copy .htaccess file
Here are steps to remove public index.php from url in laravel using htaccess:
- The first step is to create index.php in Laravel root folder.
- Copy the .htaccess file from /public folder to Laravel root folder.
Let’s start to removing public and index.php from url:
Go to your Laravel project root folder, and create Index.php in it, then add the following code to index.php:
<?php /** * Laravel - A PHP Framework For Web Artisans * * @package Laravel * @author Taylor Otwell <[email protected]> */ $uri = urldecode( parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ); // This file allows us to emulate Apache's "mod_rewrite" functionality from the // built-in PHP web server. This provides a convenient way to test a Laravel // application without having installed a "real" web server software here. if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) { return false; } require_once __DIR__.'/public/index.php';
Now, copy .htaccess file from public folder to laravel root folder, and update the following code into it:
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Send Requests To Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
Option 2 – Enable Rewrite Mode with .htaccess
Firstly, open your cmd or terminal window and run sudo a2enmod rewrite
to enable rewrite mode on your Apache server; command as follow:
sudo a2enmod rewrite
Once you have enabled rewrite mode, Now you need to do some configuration in .htaccess file. Simply create .htaccess file in laravel root folder and add the following code into it:
<IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule>
Restart your Apache web server to apply the changes by running the sudo systemctl restart apache2
command:
sudo systemctl restart apache2
Conclusion
That’s it; you have learned two different ways how to remove public index.php from url in laravel projects.