Redirecionar subpasta da Web para raiz (/pasta para /)

Redirecionar subpasta da Web para raiz (/pasta para /)

Estou tentando redirecionar/pasta para/usando .htaccess, mas tudo que consigo é a página de teste do servidor HTTP Apache. Meu diretório raiz é assim:

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

Meu .htaccess fica assim:

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

O que estou fazendo de errado? Verifiquei meu httpd.conf (estou executando o Centos) e a biblioteca mod_rewrite está sendo carregada. Como observação lateral, meu servidor não é um servidor www, é simplesmente uma máquina virtual, portanto seu nome de host é centosvm.

Adição: Meu httpd.conf se parece com isso:

<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>

Responder1

Certifique-se de que Mod_Rewrite esteja carregado. Certifique-se de ter AllowOverrides Allseu diretório raiz (é o padrão do Apache, mas a maioria das distros tem um padrão noneno arquivo httpd.conf).

Responder2

Eu descobri que <VirtualHost>faltava uma <Directory>declaração para root em minha declaração. Mudando meu <VirtualHostpara:

<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>

Meu /.htaccess se parece com:

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]

Seria mais limpo se eu soubesse dizer if REQUEST_URI = /e redirecione, mas não sei como.

Responder3

Você precisa eliminar o '/' inicial de uma correspondência com RewriteCond

Veja os exemplos emhttp://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

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

informação relacionada