2012-02-23 14 views
7

¿Hay una manera de utilizar .htaccess para contar un subdirectorio para que actúe como la raíz de todo el sitio?El uso de .htaccess para establecer un subdirectorio como directorio raíz

Por ejemplo, si yo tuviera un sitio web bajo http://localhost/testsite/ y en ella hay archivo index.php que tenía una referencia a la hoja de estilo usando el siguiente código ..

<link rel="stylesheet" type="text/css" href="/css/layout.css" /> 

¿Podría entonces hacer que la carga/localhost/testsite/css/layout.css?

Para solucionar este problema, he creado subdominios localhost para cada sitio, que a pesar de las obras, no es lo ideal.

Muchas gracias.

+6

Configure un host virtual. –

+0

Como señaló cillosis, esto normalmente se haría en su configuración de Apache para el sitio. Simplemente configure el [DocumentRoot] (http://httpd.apache.org/docs/2.0/mod/core.html#documentroot) en la carpeta deseada. –

Respuesta

2

Por supuesto, todos los URI relativos (como la suya) son en relación con el URI base que por defecto es el URI del documento:

http://localhost/testsite/index.php 

sólo tendrá que decir qué parte para añadir:

<link rel="stylesheet" type="text/css" href="./css/layout.css" /> 
              ^
              ` see this dot 

Ejemplo:

Base URI  :: http://localhost/testsite/index.php 
Relative URI :: ./css/layout.css 
Result  :: http://localhost/testsite/css/layout.css 

Si es necesario tener presente más modular, hay varias maneras de hacer tha t. Una es establecer el URI base explícitamente dentro del documento HTML (ver <base>).

Otro es resolver enlaces relativamente en el lado del servidor basado en el URI de solicitud y la ruta raíz de su sitio. Ver this answer para un ejemplo.

20

Si desea mantener el 'href = '/ css/layout.css'' parte, entonces sí, se puede establecer una regla de reescritura. Solo debes tener cuidado de no redirigir nada que empiece con/testite (o terminarás con un bucle).

gusta (en .htaccess de la raíz):

RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/testsite/.*$ 
RewriteRule ^(.*)$ /testsite/$1 [QSA,L] 

Allí, usted será capaz de acceder a su archivo layout.css ya sea desde:

http://localhost/testsite/css/layout.css

o

http://localhost/css/layout.css

Cuestiones relacionadas