Hide a folder from the URI with RewriteRule in a .htaccess file
-
21-12-2019 - |
Question
I would really appreciate if you could help me building my .htaccess file.
What I want to achieve here is moving all of my domain's files and folders to a root subfolder ("mydomain") and make sure that the URL visible to my visitors still looks like
domain.com/file.extention
instead of
domain.com/mydomain/file.extention
or
domain.com/subfolder/file.extention
instead of
domain.com/mydomain/subfolder/file.extention
This is my folders tree:
/
/mydomain
/subfolder
index.php
test.php
and here is my current .htaccess file:
<IfModule mod_rewrite.c>
# System symbolic links are allowed.
Options +FollowSymlinks
# Runtime rewriting engine enabled.
RewriteEngine On
#
# BEGIN DOMAIN
#
# Make 'mydomain' subfolder the root folder for the domain.
RewriteCond %{HTTP_HOST} ^((www\.)?domain\.com) [NC]
RewriteRule ^\/?$ mydomain/ [NC,L,S=1]
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/?mydomain/ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ mydomain/$1 [NC,L]
#
# END DOMAIN
#
</IfModule>
The problem here is that it works when I browse for
domain.com/subfolder/
but not with
domain.com/subfolder
and with
domain.com/index.php
but not with
domain.com/test.php
Thank you all,
Matteo
Solution
Changing domain.com/mydomain/file.extention to domain.com/file.extention
use this for example
RewriteRule ^mydomain/(.+)$ http://www.domain.com/ [R=301,L]
But if you redirects working just for some pages check that you clear browser cache or use another one instead
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow