2012-04-28 17 views
11

Estoy trabajando en un proyecto bastante complejo, por lo que me gustaría ir con una estructura de archivo/carpeta que tenga sentido.¿Hacer que la carpeta raíz web sea una subcarpeta con .htaccess?

La estructura de la carpeta/archivo que me gustaría tener es:

.htaccess 
/php/ 
/assets/ 

me gustaría tener las páginas web que la gente tendrá acceso en:

/php/views/pages/ 

Me pregunto si es posible usar solo .htaccess para establecer /php/views/pages como la "raíz visible", de modo que, por ejemplo, cuando las personas visiten http://mydomain.com/ estarán viendo http://mydomain.com/php/views/pages/index.php, y si es así, ¿cómo podría hacerlo?

Además, ¿es posible canonicalizar todos los accesos a /php/views/pages usando .htaccess y una redirección 301 para detener la indexación de múltiples enlaces en los motores de búsqueda?

+0

¿Por qué no puede cambiar la directiva 'DocumentRoot'? –

Respuesta

24

Si usted no tiene acceso a la configuración de hosts

DocumentRoot sólo se puede utilizar en el servidor y configuraciones de la máquina virtual, .htaccess que debe ser.

  1. Vamos a añadir directivas en su .htaccess

    RewriteEngine on 
    
  2. Asumo desea que las peticiones a/activos pasan por

    #if a match for asset is found, do nothing 
    RewriteRule ^assets/ - [L] 
    
  3. Si una solicitud intenta acceder /php/views/pages/ directamente, redirija a su versión canónica

    RewriteCond %{THE_REQUEST} php/views/pages/ 
    RewriteRule ^php/views/pages/(.*) http://mydomain.com/$1 [R=301,L] 
    
  4. Y añadir una regla para trazar todo lo demás para /php/views/pages/

    RewriteCond %{REQUEST_URI} !php/views/pages/ 
    RewriteRule ^(.*)$ /php/views/pages/$1 [L] 
    

Si usted tiene acceso a la configuración de hosts

Olvídate de los archivos .htaccess y utilizarlo. Una configuración de muestra podría verse como

# ~base stands for your original DocumentRoot 
<VirtualHost *:80> 
    DocumentRoot ~base/php/views/pages 
    Alias /assets ~base/assets 

    # other configuration parameters 
</VirtualHost> 
+1

Brillante. Hay un límite de tiempo en la recompensa, así que te lo otorgaré cuando termine :). Muchas gracias por la respuesta muy explicativa. – Avicinnian

+0

¡Muy bien explicado! –

Cuestiones relacionadas