Linus Odenring
Linus Odenring

Reputation: 881

Change public_html directory .htaccess

My folder for public_html is /domain.com/public_html/ but i want the htaccess to redirect them to the folder /domain/public_html/www/ but still have domain.com as domain and not domain.com/www .

EDIT: I want the subfolder www in the public_html do be the default root and not public_html itself

Any solution on this?

Here is my current htacess

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php
<IfModule mod_rewrite.c>
    RewriteEngine On    
    RewriteRule ^(.*)$ www/$1 [NC,L]
</IfModule>

Upvotes: 0

Views: 12542

Answers (2)

Dan Barzilay
Dan Barzilay

Reputation: 4983

Try to put this in the htaccess on the public_html folder:

<IfModule mod_rewrite.c>
    RewriteEngine On    
    RewriteRule ^(.*)$ www/$1 [NC,L]
</IfModule>

OR

Edit the apache configuration (httpd.conf)

vi /usr/local/apache/conf/httpd.conf

and set the DocumentRoot of the domain as

DocumentRoot /home/user/public_html/www

Save the file and restart the httpd service.

OR (recomanded)

Take a look at this question(and it's answer) - https://stackoverflow.com/a/5891858/1361042

EDIT

Use this HTACCESS:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/www/
    RewriteRule ^(.*)$ www/$1 [NC, QSA]
</IfModule>

don't add it to yours but replace your htaccess with this one.

Upvotes: 1

Joachim Isaksson
Joachim Isaksson

Reputation: 180917

If you can only go for .htaccess, this simple one should do it;

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1 [QSA]

Explanation;

RewriteEngine on                      # Turn on mod_rewrite functionality
RewriteCond %{REQUEST_URI} !^/www/    # Don't rewrite requests that are 
                                      # already to the /www/ directory. 
                                      # If this isn't here, we'll go into
                                      # a neverending loop.
RewriteRule ^(.*)$ /www/$1 [QSA]      # Rewrite all else to the www subdirectory
                                      # QSA = keep the query string.

EDIT: Didn't see your existing htaccess, this (minus the redundant RewriteEngine statement) should probably go at the end instead of the whole IfModule block.

Upvotes: 6

Related Questions