Yes there, have been similar questions, but the suggested solutions are not working for me. So I've set up Laravel, and the installation works fine. Well, as long as I'm staying on the base route
localhost/page/
as soon as I'm trying to hit one of my routes, let's say
localhost/page/subpage
and the route is configured to return a view
Route::get('subpage', ['as' => 'subpage', 'uses' => 'GenericPageController@subpage']);
The method subpage in the Controller:
public function subpage()
{
return view('base.subpage');
}
I simply get a 404 response from the server whenever i try hitting one of the routes. It doesnt matter what controller I'm using, or if its returning a view or a closure.
AllowOverride is set
to Allmy .htaccess in the page/public folder looks like the following:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Anyone has an idea what the problem could be?
The .htaccess file won't load up because it is in the public directory, which is really meant to be your document root. As such, you should be accessing the app by going to localhost/page/public/subpage.
If you want to use localhost/page/subpage whilst keeping your directory structure intact, then you need to add a new .htaccess file to the page directory, and delete the .htaccess file from the public directory.
/page/.htaccess contents:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteBase /page/
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Send requests to public directory...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ public/index.php [L]
</IfModule>
Unfortunately, due to the way in which Laravel obtains the request information, you will need to group your routes to the page directory in your route configuration:
Route::group(['prefix' => 'page'], function()
{
Route::get('subpage', ['as' => 'subpage', 'uses' => 'GenericPageController@subpage']);
// Your other routes ...
});
Essentially, and in my opinion, this is the easiest way to work around this. You could also move the contents of your public directory up one level and change the paths accordingly in the bootstrap file.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With