Laravel Tutorials: How to run Laravel Projects in Subdirectory

The issue you’re experiencing is common with Laravel applications when deployed in a subdirectory. By default, Laravel’s entry point is the public directory, which means you need to point your web server’s document root to the public directory of your Laravel application for it to work correctly. However, in a shared hosting environment or when working within a subdirectory, you may not have the flexibility to change the server configuration easily. Here are a couple of solutions to make your Laravel application

Option 1: Modify the .htaccess File

You can use an .htaccess file to rewrite URLs so that requests to https://www.bangaloreorbit.com/events/ are served by the public directory of your Laravel project. If you don’t already have an .htaccess file in your events directory, create one. Then, add the following rules:


<IfModule mod_rewrite.c>
    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_URI} !^/public/
    RewriteRule ^(.*)$ public/$1 [L,QSA]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>

Option 2: Change Document Root (If Possible)

If you have access to modify the document root setting for your domain or subdomain (this is possible in some hosting environments), change the document root to point directly to the public directory of your Laravel application:

  • From: /home/professnow/public_html/orbit/bangaloreorbit.com/events
  • To: /home/professnow/public_html/orbit/bangaloreorbit.com/events/public

This change ensures that the web server serves the Laravel application directly from the correct entry point.

Option 3: Move Laravel Public Directory Content

If you cannot change the document root, another approach is to move the contents of the public directory to the root of your events directory and update paths accordingly. This method requires adjusting the index.php file in your new public location to correctly point to the autoload.php and app.php files.

  1. Move all files from public to the events root directory.
  2. Open index.php in the new location and update the paths to autoload.php and app.php to reflect their new paths.

For example, change:

Rajesh Kumar
Follow me
Latest posts by Rajesh Kumar (see all)
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x