Redirigir subcarpeta web a raíz (/carpeta a /)

Redirigir subcarpeta web a raíz (/carpeta a /)

Estoy intentando redirigir /carpeta a/usando .htaccess pero lo único que obtengo es la página de prueba del servidor HTTP Apache. Mi directorio raíz se ve así:

/
.htaccess
-/folder
-/folder2
-/folder3

Mi .htaccess se ve así:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder/
RewriteRule (.*) /folder/$1 

¿Qué estoy haciendo mal? Revisé mi httpd.conf (estoy ejecutando Centos) y se está cargando la biblioteca mod_rewrite. Como nota al margen, mi servidor no es un servidor www, es simplemente una máquina virtual, por lo que su nombre de host es centosvm.

Además: Mi httpd.conf se ve así:

<VirtualHost *:80>
        ServerName taa.local
        DocumentRoot /var/www/html
        SetEnv APPLICATION_ENV "dev"
        Alias /taa /var/www/html/taa/public
        <Directory /var/www/html/taa/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Respuesta1

Asegúrese de que Mod_Rewrite esté cargado. Asegúrese de tenerlo AllowOverrides Allen su directorio raíz (es el valor predeterminado de Apache, pero la mayoría de las distribuciones tienen un valor predeterminado noneen el archivo httpd.conf).

Respuesta2

Descubrí que a mi <VirtualHost>declaración le faltaba una <Directory>declaración para root. Cambiando mi <VirtualHosta:

<VirtualHost *:80>
        ServerName taa.local
        DocumentRoot /var/www/html
        SetEnv APPLICATION_ENV "dev"
        Alias /folder1 /var/www/html/folder1/public
        <Directory /var/www/html>
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        <Directory /var/www/html/folder1/public>
                DirectoryIndex index.php
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
</VirtualHost>

Mi /.htaccess se parece a:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/folder1/
RewriteCond %{REQUEST_URI} !^/folder2/
RewriteCond %{REQUEST_URI} !^/folder3/
RewriteCond %{REQUEST_URI} !^/folder4/
RewriteCond %{REQUEST_URI} !^/folder5/
RewriteRule (.*) folder1/$1 [L]

Sería más limpio si supiera decir si REQUEST_URI = /y luego redirigir, pero no sé cómo.

Respuesta3

Debes eliminar el '/' inicial de una coincidencia con RewriteCond

Vea los ejemplos enhttp://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

RewriteEngine On 
RewriteCond %{REQUEST_URI} !^folder/ 
RewriteRule (.*) /folder/$1

información relacionada