I have the next file structure:
.htaccess
index.php
public/
├─ v1/
│ ├─ .htaccess
│ ├─ index.php
├─ index.php
I've set document root on server level to public
subfolder in order to remove it from url.
I need all the requests containing v1
in url to be redirected to v1/index.php
.
My root .htaccess
:
RewriteEngine On
RewriteCond %{REQUEST_URI} !public/
RewriteRule (.*) /public/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
and v1/.htaccess
:
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} !-d [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ index.php [QSA,L]
Expected behavior:
Non-existing https://example.com/v1/test
page should redirect to https://example.com/v1/
.
What I get instead:
Not Found
The requested URL was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
I am pretty sure the problem is in second .htaccess
. I also suspect that custom Document Root can be a problem too here.