Search code examples
regexapache.htaccessmod-rewritedirectory-structure

.htaccess Rewrite Engine, folder-structure,


Havin following folder-structure

And .htaccess structure as following

RewriteEngine On


# The following rule tells Apache that if the requested filename
# exists, simply serve it.
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# The following rewrites all other queries to index.php. The 
# condition ensures that if you are using Apache aliases to do
# mass virtual hosting, the base path will be prepended to 
# allow proper resolution of the index.php file; it will work
# in non-aliased environments as well, providing a safe, one-size 
# fits all solution.
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$
RewriteRule ^(.*) - [E=BASE:%1]
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L]

Problem when accessing http://somesite.somename.com/ it shows folder structure to make it work i need to access http://somesite.somename.com/public

Question How to make http://somesite.somename.com/public be accessed as http://somesite.somename.com/?


Solution

  • You need to have .htaccess at root level (a level above public) to forward all traffic to public:

    RewriteEngine On
    RewriteBase /
    
    RewriteRule ^(.*)$ public/$1 [L]
    

    No change is needed in /public/.htaccess