2011-04-26 19 views
9

Tengo una cuenta de alojamiento compartido asociada con un nombre de dominio y la carpeta raíz (corrígeme si ese es el término incorrecto) está configurado en / para que todos los archivos en el servidor sean públicos/accesible a través del navegador.Cambiar la carpeta raíz a través de .htaccess

¿Puedo usar .htaccess o algo así para cambiar la carpeta raíz a algo así como /example.com/public/?

Respuesta

21

Si estoy entendiendo correctamente, el siguiente debe trabajar

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/public/ 
RewriteRule ^(.*)$ /public/$1 [L,R=301] 

Esto redireccionará todas las solicitudes que no comienzan con /public/ a URL que hace.

Espero que ayude.

+0

Gracias, @clmarquart! ¿Qué sucede si tenemos que mantener '/ example.com /' para ir a '/ example.com/index.html' o'/example.com/index.php'? – moey

+0

También puede ser una ventaja agregar RewriteBase/antes de RewriteCond. Especialmente si está utilizando directivas VirtualDocumentRoot. – zmonteca

+0

Gracias ayudó ... –

6

El DocumentRoot directive no se puede establecer en un archivo .htaccess, solo en la configuración del servidor. Como lo más probable es que no tenga los privilegios para modificar la configuración del servidor, su única solución es utilizar alguna magia de reescritura como clmarquart already mentioned.

5

Ésta es la forma en que siempre lo uso en mi marco:

Rewritecond %{REQUEST_FILENAME} !-f 
RewriteRule (.*) /example.com/public/$1 [L,NC] 

RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule !^example.com/public/(.*) /example.com/public/$1 [L,NC] 
+0

No funcionó en mí ... –

0

utilizo bluehost ... esto es lo que funciona para mí: Esto es útil cuando se está en alojamiento compartido, y tienen múltiples dominios nombres.

Su dominio principal se establece en public_html pero sus dominios add-On son subcarpetas dentro de public_html

Esto hace que sea por lo que no tiene que tener todos sus archivos de nombre de dominio principal mezclarse con complemento carpetas de dominio ... cada dominio puede estar en su propia carpeta ...

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ 
RewriteCond %{REQUEST_URI} !^/PUTYOURFOLDERHERE/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /PUTYOURFOLDERHERE/$1 
RewriteCond %{HTTP_HOST} ^(www.)?PUTYOURDOMAINNAMEHERE.com$ 
RewriteRule ^(/)?$ PUTYOURFOLDERHERE/ [L] 
Options +SymLinksIfOwnerMatch 
Cuestiones relacionadas